實現(xiàn)SQL Server創(chuàng)建事務要用到的代碼
以下的文章主要向大家介紹的是實現(xiàn)SQL Server創(chuàng)建事務所要用到的Sql代碼,我也是SQL Server學習方面的新手,前兩天在無意間在一網(wǎng)站看見關(guān)于實現(xiàn)SQL Server創(chuàng)建事務所要用到的Sql代碼,覺得挺好拿出來和大家一起分享。
Sql代碼
- --借書的事務
- begin transaction
- declare @error int
- set @error = 0
- insert into borrows(rid,bid,borrowdate) values
- (5,10,2008-6-11)
- set @error = @error + @@error
- update books set bstate=1
- where bid=10
- set @error = @error + @@error
- if @error <> 0
- rollback transaction
- else
- commit transaction
- --借書的事務
- begin transaction
- declare @error int
- set @error = 0
- insert into borrows(rid,bid,borrowdate) values
- (5,10,2008-6-11)
- set @error = @error + @@error
- update books set bstate=1
- where bid=10
- set @error = @error + @@error
- if @error <> 0
- rollback transaction
- else
- commit transaction
事物三步曲:begin transaction,rollback transaction,commit transaction。在這里我們還看到了@error和@@error兩個變量,前者是我們定義的局部變量,后者是sql server定義好的int型全局變量。定義變量的方式為:declare @error int 。
而設置局部變量的方式為set @error = 0,還有一種方式為 select @error = 字段名稱 from 表。順便說一下,在sql server 種輸出方式也有兩種,一種是print,另一種是select 語句。前者打印的是文本,后者打印的是表格。
關(guān)于事務,就的提到事務的隔離級別了,分別為:讀未提交,讀已提交,可重復讀和序列化。sql server默認的隔離級別為讀已提交。不同的隔離級別產(chǎn)生的問題有:丟失修改(寫寫沖突),脹讀,不可重復讀和幻讀。讀未提交隔離級別會產(chǎn)生所有問題,而序列化不會產(chǎn)生任何問題。另外,幻讀和不可重復讀的概念也是不一樣的哦,一個是對象的集合,一個是對象的狀態(tài)。