第1講事務(wù)與游標(biāo)編程_第1頁
第1講事務(wù)與游標(biāo)編程_第2頁
第1講事務(wù)與游標(biāo)編程_第3頁
第1講事務(wù)與游標(biāo)編程_第4頁
第1講事務(wù)與游標(biāo)編程_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第10講 問題|問題 在銀行等重要交易中,要使一組sql語句同時執(zhí)行或撤消,如何做? 要對查詢結(jié)果進(jìn)行一行行的操作,如何做到? 事務(wù)概述|事務(wù)是作為單個邏輯工作單元執(zhí)行的一系列操作。z思考:事務(wù)和批處理的區(qū)別?|事務(wù)的屬性(acid)z原子性:原子工作單元z一致性:保證數(shù)據(jù)的一致性z隔離性:并發(fā)事務(wù)之間所做的修改要隔離并發(fā)操作:幾個用戶程序同時讀寫一個數(shù)據(jù)的情況z持久性:對系統(tǒng)的影響要持久簡單事務(wù)編程|格式:1.begin transaction2.commit transaction3.rollback transaction|【問題】簡單的事務(wù)提交和回滾z說明:如果沒有明確給出begin

2、transaction語句,則sql server是將每個sql語句都當(dāng)成一個事務(wù)進(jìn)行執(zhí)行事務(wù)的嵌套|嵌套事務(wù)只有在提交了最外層的事務(wù)后,數(shù)據(jù)才執(zhí)行永久修改|嵌套事務(wù)時,rollback語句只能將所有內(nèi)層事務(wù)回滾到最外層的begin transaction語句封鎖|利用封鎖技術(shù)可以有效地保證數(shù)據(jù)的一致性|封鎖粒度:可以鎖定在行、列、表、數(shù)據(jù)庫等不同的單元上|sql server具有自動和強(qiáng)制封鎖的功能鎖模式|鎖模式:1.共享鎖(share lock)2.排他鎖(exclusive lock)3.更新鎖(update lock)|各種鎖模式的兼容性: 共享鎖共享鎖更新鎖更新鎖排他鎖排他鎖共享鎖共

3、享鎖yesyesno更新鎖更新鎖yesnono排他鎖排他鎖nonono死鎖|當(dāng)兩個事務(wù)trans1和trans2在下列的狀態(tài)時,將產(chǎn)生死鎖:1.trans1:存取數(shù)據(jù)項(xiàng)x和y2.trans2:存取數(shù)據(jù)項(xiàng)y和xz【說明】如果事務(wù)trans1封鎖了數(shù)據(jù)項(xiàng)x,事務(wù)trans2封鎖了數(shù)據(jù)項(xiàng)y,則trans1等待trans2釋放y上的鎖,trans2等待trans1釋放x上的鎖。因此,trans1和trans2都無限地等待對方打開鎖住的數(shù)據(jù)項(xiàng),則產(chǎn)生死鎖。死鎖(續(xù))|【死鎖示例】|說明: sql server能自動發(fā)現(xiàn)并解除死鎖|避免死鎖的措施:p.237 游標(biāo)引例以前:使用select語句對表格進(jìn)行查

4、詢,返回的結(jié)果集包括所有滿足條件的行。思考:如果要求每次只顯示表格(例如上面的course表)中的一行,該如何處理?這在將t-sql嵌入到其他高級語言(如c、vc、delphi等)的編程中經(jīng)常用到。 游標(biāo)概述|可以將游標(biāo)看作一種特殊的指針,它可以指向與它相關(guān)聯(lián)的結(jié)果集中的任意一行,以便對當(dāng)前位置的行進(jìn)行處理。|游標(biāo)提供了對一個結(jié)果集進(jìn)行逐行處理的能力:1.在結(jié)果集中定位特定行2.從結(jié)果集的當(dāng)前位置檢索行3.支持對結(jié)果集中當(dāng)前位置的行進(jìn)行數(shù)據(jù)處理(修改/刪除)使用游標(biāo)的步驟|聲明游標(biāo)|打開游標(biāo)|處理數(shù)據(jù)(讀取/修改/刪除)可以和其他t-sql語句配合靈活使用|關(guān)閉游標(biāo)(與打開游標(biāo)配對)|刪除游標(biāo)

5、(與聲明游標(biāo)配對,此時釋放分配給游標(biāo)的所有資源)【問題】游標(biāo)基本使用的例子相關(guān)語法格式|聲明游標(biāo)declare cursor_name cursordeclare cursor_name cursorforword_only|scrollforword_only|scrollfor select_statementsfor select_statements|打開游標(biāo)open cursor_nameopen cursor_name|使用游標(biāo)fetch next|prior|first|lastfetch next|prior|first|lastfrom cursor into variabl

6、e_namefrom cursor into variable_name|關(guān)閉游標(biāo)close cursor_nameclose cursor_name|刪除游標(biāo)deallocation cursor_namedeallocation cursor_name練習(xí)11.聲明一個名為crsstudent的游標(biāo),使其與“00電子商務(wù)班”的所有學(xué)生信息(學(xué)號、姓名)相關(guān)聯(lián),并逐行顯示前三條學(xué)生信息如果遍歷整個結(jié)果集?|使用fetch_status:z該全局變量/配置函數(shù)返回被最后fetch語句執(zhí)行的游標(biāo)的狀態(tài),返回類型為int:1.0:fetch語句成功2.1:fetch語句失敗或此行不在結(jié)果集中3.2:被提取的行不存在練習(xí)2|使用游標(biāo)遍歷course表,輸出報(bào)名人數(shù)最多的課程的信息(課程編碼、課程名稱、報(bào)名人數(shù))練習(xí)3|建立一個存

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論