服務(wù)熱線
153 8323 9821
mssql
事務(wù)的使用:
1.begin distributed transaction 指定一個(gè)事務(wù)的起始。
原型:
Begin destributed tran [ saction] [transaction_name! @tran_name_variable]
例如:
Use northwind
Begin destributed transaction //開(kāi)始一個(gè)分布式事務(wù)
Update empoyees //對(duì)表empolees 進(jìn)行更新
Set firstname=’mcdonald’ where homephone = ‘(206) 555-9875’
Commit transaction //結(jié)束事務(wù)
Go
2.commit transcation 指明事務(wù)結(jié)束。
3.rollback transcation 撒銷對(duì)數(shù)據(jù)庫(kù)作出的所有改變,返回到事務(wù)開(kāi)始之前的狀態(tài)。
原型:
Rollback [tran [saction] [transaction_name] @tran_name_variable | savepoint_name |
@savepoint_variable]
參數(shù)說(shuō)明:
Transadtion 給begin transaction上的事務(wù)指派的名稱。
@tran_name_bariable 用戶定義的、含有有效事務(wù)名稱的變量名稱。
Savepoint_name 是來(lái)自SAVE TRANSACTION語(yǔ)句的svepoint_name。
@savepoint_variable 是用戶定義的、含有有效保存點(diǎn)名稱的變量的名稱。
例如:
Begin transaction royaltychange //事務(wù)開(kāi)始
Update titleauthor //更新表
Set royaltyper = 65 //重設(shè)參數(shù)
From titleauthor,titles
Where royaltyper=75
And titleauthor.title_id=titles.title_id
And title=’The Gourmet Microwave’
Update titleauthor
Set royaltype = 15
From titleauthor, titles
Where royaltyper=25
And titleauthor.title_id=titles.title_id
And title = ‘The Gourmet Microwave’
Save transaction percentchanged //在事務(wù)內(nèi)設(shè)置保存點(diǎn)
Update titles
Set price = price* 1.1
Where title =’The Gourmet Microwave’
Select (price * royalty * ytd_sales)* royaltyper
From titles,titleauthor
Where title=’The Gourmet Microwave’
And titles.title_id=titleauthor.title_id
Rollback transaction percentchanged //回到先前保存過(guò)的保存點(diǎn)
Commit transaction // 事務(wù)結(jié)束
4.save transaction 在事務(wù)內(nèi)設(shè)置保存點(diǎn)。
5.commit work 標(biāo)志事務(wù)的結(jié)束。
6.rollback work 將用戶的事務(wù)回滾到事務(wù)的起點(diǎn)。
游標(biāo)的使用:
1.declare cursor 定義游標(biāo)結(jié)構(gòu)并分配資源。
原型:
Declate cursor_name [insensitive] [scorll] cursor for select_statement [for { read
Only | update }[of column _list]]
或者:
Declare cursor_name cursor [local | global] [forward_only | scroll] [static | keyset |
dynamic] [read_only | scroll_locks | optimistic] for [select _statement
[ for {read only | update } [of column_list]]]
參數(shù)說(shuō)明:
INSENSITIVE 指明要為檢索到的結(jié)果集建立一個(gè)臨時(shí)拷貝,以后的數(shù)據(jù)從這個(gè)臨時(shí)拷貝中獲取。原有基表中數(shù)據(jù)發(fā)生了改變,對(duì)于游標(biāo)而言是不可見(jiàn)的。這種不敏感的游標(biāo)不允許數(shù)據(jù)更改。
SCROLL 指明游標(biāo)可以在任意方向上滾動(dòng)。忽略該選項(xiàng),則游標(biāo)只能向前滾動(dòng)。
SELECT_SATAEMENT 指明SQL語(yǔ)句建立的結(jié)果集。
READ ONLY 指明在游標(biāo)結(jié)果集中不允許進(jìn)行數(shù)據(jù)更改。
UPDATE 指明游標(biāo)結(jié)果集可以進(jìn)行修改。
OF COLUMN_LIST 指明結(jié)果集中可以進(jìn)行修改的列。缺省時(shí)(使用UPDATE關(guān)鍵字),所有的列都可進(jìn)行修改。
LOCAL 指明游標(biāo)是局部的,只能在它所聲明的過(guò)程中使用。全局的游標(biāo)在連接激活的任何時(shí)候都是可用的。只有池連接結(jié)束時(shí),才不再可用。
GLOBAL 使用游標(biāo)對(duì)于整個(gè)連接全局可見(jiàn)。
FORWARD_ONLY 指明游標(biāo)只能向前滾動(dòng)。
STATIC 與INSENITIVE的游標(biāo)相同。
KEYSET 指明選取的行的順序。
DYNAMIC 指明游標(biāo)反映所有對(duì)結(jié)果集的修改。
SCROLL_LOCK 對(duì)修改或刪除加鎖。保證游標(biāo)操作成功。
OPTIMISTIC 指明哪些通過(guò)游標(biāo)進(jìn)行的修改或者刪除將不會(huì)成功。
例如:
Use northwind
Go
Declare customers_cursor cursor //定義游標(biāo)