日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

MS-SQL中的事务

發(fā)布時(shí)間:2024/6/5 数据库 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MS-SQL中的事务 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一 事務(wù)的屬性 事務(wù)具有ACID屬性 即 Atomic原子性, Consistent一致性, Isolated隔離性, Durable永久性原子性就是事務(wù)應(yīng)作為一個(gè)工作單元,事務(wù)處理完成,所有的工作要么都在數(shù)據(jù)庫(kù)中保存下來(lái),要么完全 回滾,全部不保留一致性 事務(wù)完成或者撤銷后,都應(yīng)該處于一致的狀態(tài)隔離性多個(gè)事務(wù)同時(shí)進(jìn)行,它們之間應(yīng)該互不干擾.應(yīng)該防止一個(gè)事務(wù)處理其他事務(wù)也要修改的數(shù)據(jù)時(shí), 不合理的存取和不完整的讀取數(shù)據(jù)永久性 事務(wù)提交以后,所做的工作就被永久的保存下來(lái)二 事務(wù)并發(fā)處理會(huì)產(chǎn)生的問(wèn)題丟失更新當(dāng)兩個(gè)或多個(gè)事務(wù)選擇同一行,然后基于最初選定的值更新該行時(shí),會(huì)發(fā)生丟失更新問(wèn)題、 每個(gè)事務(wù)都不知道其它事務(wù)的存在。最后的更新將重寫由其它事務(wù)所做的更新,這將導(dǎo)致數(shù)據(jù)丟失。臟讀 當(dāng)?shù)诙€(gè)事務(wù)選擇其它事務(wù)正在更新的行時(shí),會(huì)發(fā)生未確認(rèn)的相關(guān)性問(wèn)題。 第二個(gè)事務(wù)正在讀取的數(shù)據(jù)還沒(méi)有確認(rèn)并且可能由更新此行的事務(wù)所更改。不可重復(fù)讀當(dāng)?shù)诙€(gè)事務(wù)多次訪問(wèn)同一行而且每次讀取不同的數(shù)據(jù)時(shí),會(huì)發(fā)生不一致的分析問(wèn)題。 不一致的分析與未確認(rèn)的相關(guān)性類似,因?yàn)槠渌聞?wù)也是正在更改第二個(gè)事務(wù)正在讀取的數(shù)據(jù)。 然而,在不一致的分析中,第二個(gè)事務(wù)讀取的數(shù)據(jù)是由已進(jìn)行了更改的事務(wù)提交的。而且,不一致的分析涉及多次(兩次或更多)讀取同一行,而且每次信息都由其它事務(wù)更改;因而該行被非重復(fù)讀取。幻像讀當(dāng)對(duì)某行執(zhí)行插入或刪除操作,而該行屬于某個(gè)事務(wù)正在讀取的行的范圍時(shí),會(huì)發(fā)生幻像讀問(wèn)題。 事務(wù)第一次讀的行范圍顯示出其中一行已不復(fù)存在于第二次讀或后續(xù)讀中,因?yàn)樵撔幸驯黄渌聞?wù)刪除。同樣,由于其它事務(wù)的插入操作,事務(wù)的第二次或后續(xù)讀顯示有一行已不存在于原始讀中。三 事務(wù)處理類型自動(dòng)處理事務(wù)系統(tǒng)默認(rèn)每個(gè)T-SQL命令都是事務(wù)處理 由系統(tǒng)自動(dòng)開(kāi)始并提交隱式事務(wù)當(dāng)有大量的DDL 和DML命令執(zhí)行時(shí)會(huì)自動(dòng)開(kāi)始,并一直保持到用戶明確提交為止, 切換隱式事務(wù)可以用SET IMPLICIT_TRANSACTIONS 為連接設(shè)置隱性事務(wù)模式. 當(dāng)設(shè)置為 ON 時(shí),SET IMPLICIT_TRANSACTIONS 將連接設(shè)置為隱性事務(wù)模式。 當(dāng)設(shè)置為 OFF 時(shí),則使連接返回到自動(dòng)提交事務(wù)模式用戶定義事務(wù)由用戶來(lái)控制事務(wù)的開(kāi)始和結(jié)束 命令有: begin tran commit tran rollback tran 命令分布式事務(wù) 跨越多個(gè)服務(wù)器的事務(wù)稱為分布式事務(wù),sql server 可以由DTc microsoft distributed transaction coordinator 來(lái)支持處理分布式事務(wù),可以使用 BEgin distributed transaction 命令啟動(dòng)一個(gè)分布式事務(wù)處理四 事務(wù)處理的隔離級(jí)別使用SET TRANSACTION ISOLATION LEVEL來(lái)控制由連接發(fā)出的所有語(yǔ)句的默認(rèn)事務(wù)鎖定行為從低到高依次是READ UNCOMMITTED執(zhí)行臟讀或 0 級(jí)隔離鎖定,這表示不發(fā)出共享鎖,也不接受排它鎖。當(dāng)設(shè)置該選項(xiàng)時(shí),可以對(duì)數(shù)據(jù)執(zhí)行未提交讀或臟讀;在事務(wù)結(jié)束前可以更改數(shù)據(jù)內(nèi)的數(shù)值,行也可以出現(xiàn)在數(shù)據(jù)集中或從數(shù)據(jù)集消失。該選項(xiàng)的作用與在事務(wù)內(nèi)所有語(yǔ)句中的所有表上設(shè)置 NOLOCK 相同。這是四個(gè)隔離級(jí)別中限制最小的級(jí)別。舉例設(shè)table1(A,B,C) A B C a1 b1 c1 a2 b2 c2 a3 b3 c3新建兩個(gè)連接 在第一個(gè)連接中執(zhí)行以下語(yǔ)句 select * from table1 begin tran update table1 set c='c' select * from table1 waitfor delay '00:00:10' --等待10秒 rollback tran select * from table1在第二個(gè)連接中執(zhí)行以下語(yǔ)句 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED print '臟讀' select * from table1 if @@rowcount>0 begin waitfor delay '00:00:10' print '不重復(fù)讀' select * from table1 end第二個(gè)連接的結(jié)果臟讀 A B C a1 b1 c a2 b2 c a3 b3 c'不重復(fù)讀' A B C a1 b1 c1 a2 b2 c2 a3 b3 c3READ COMMITTED指定在讀取數(shù)據(jù)時(shí)控制共享鎖以避免臟讀,但數(shù)據(jù)可在事務(wù)結(jié)束前更改,從而產(chǎn)生不可重復(fù)讀取或幻像數(shù)據(jù)。該選項(xiàng)是 SQL Server 的默認(rèn)值。在第一個(gè)連接中執(zhí)行以下語(yǔ)句 SET TRANSACTION ISOLATION LEVEL READ COMMITTED begin tran print '初始' select * from table1 waitfor delay '00:00:10' --等待10秒 print '不重復(fù)讀' select * from table1 rollback tran在第二個(gè)連接中執(zhí)行以下語(yǔ)句 SET TRANSACTION ISOLATION LEVEL READ COMMITTEDupdate table1 set c='c'第一個(gè)連接的結(jié)果初始 A B C a1 b1 c1 a2 b2 c2 a3 b3 c3不重復(fù)讀 A B C a1 b1 c a2 b2 c a3 b3 cREPEATABLE READ鎖定查詢中使用的所有數(shù)據(jù)以防止其他用戶更新數(shù)據(jù),但是其他用戶可以將新的幻像行插入數(shù)據(jù)集,且幻像行包括在當(dāng)前事務(wù)的后續(xù)讀取中。因?yàn)椴l(fā)低于默認(rèn)隔離級(jí)別,所以應(yīng)只在必要時(shí)才使用該選項(xiàng)。在第一個(gè)連接中執(zhí)行以下語(yǔ)句 SET TRANSACTION ISOLATION LEVEL REPEATABLE READ begin tran print '初始' select * from table1 waitfor delay '00:00:10' --等待10秒 print '幻像讀' select * from table1 rollback tran在第二個(gè)連接中執(zhí)行以下語(yǔ)句 SET TRANSACTION ISOLATION LEVEL REPEATABLE READ insert table1 select 'a4','b4','c4'第一個(gè)連接的結(jié)果初始 A B C a1 b1 c1 a2 b2 c2 a3 b3 c3幻像讀 A B C a1 b1 c1 a2 b2 c2 a3 b3 c3 a4 b4 c4SERIALIZABLE在數(shù)據(jù)集上放置一個(gè)范圍鎖,以防止其他用戶在事務(wù)完成之前更新數(shù)據(jù)集或?qū)⑿胁迦霐?shù)據(jù)集內(nèi)。這是四個(gè)隔離級(jí)別中限制最大的級(jí)別。因?yàn)椴l(fā)級(jí)別較低,所以應(yīng)只在必要時(shí)才使用該選項(xiàng)。該選項(xiàng)的作用與在事務(wù)內(nèi)所有 SELECT 語(yǔ)句中的所有表上設(shè)置 HOLDLOCK 相同。在第一個(gè)連接中執(zhí)行以下語(yǔ)句 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE begin tran print '初始' select * from table1 waitfor delay '00:00:10' --等待10秒 print '沒(méi)有變化' select * from table1 rollback tran在第二個(gè)連接中執(zhí)行以下語(yǔ)句 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE insert table1 select 'a4','b4','c4'第一個(gè)連接的結(jié)果初始 A B C a1 b1 c1 a2 b2 c2 a3 b3 c3沒(méi)有變化 A B C a1 b1 c1 a2 b2 c2 a3 b3 c3五 事務(wù)處理嵌套的語(yǔ)法和對(duì)@@TRANCOUNT的影響B(tài)EGIN TRAN @@TRANCOUNT+1 COMMIT TRAN @@TRANCOUNT-1 ROLLBACK TRAN

三種使用事務(wù)的方式:

1)放在一個(gè)try~catch里面 alter PROCEDURE [dbo].[dd] AS BEGINbegin try begin traninsert into student values('new111111111111111111111111111','1',2,'23',3,getdate())insert into person values('new21312',5,'45')commit tranend trybegin catchprint 'a'rollback tranend catch end2)set xact_abord on有錯(cuò)誤發(fā)生時(shí),整個(gè)自動(dòng)回滾ALTER PROCEDURE [dbo].[dd2] AS BEGINbegin tranSET XACT_ABORT oninsert into person values('n',5,'45')insert into student values('new111111111111111111111111111123','1',2,'23',3,getdate())commit tran end3)自定義變量統(tǒng)計(jì)@@error declare @err int set @err=0 begin tran--操作1 set @err=@err+abs(@@error)--操作2 set @err=@err+abs(@@error)--操作3 set @err=@err+abs(@@error) if @err=0 commit elserollback

轉(zhuǎn)載于:https://www.cnblogs.com/liyb5619/archive/2010/10/29/1864398.html

總結(jié)

以上是生活随笔為你收集整理的MS-SQL中的事务的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲一区二区三区四区在线观看 | 韩国av中文字幕 | 天天干中文字幕 | 久久精品在线播放 | xx色综合| 蜜桃在线一区 | 日本熟妇毛耸耸xxxxxx | 日韩一区二区三 | 国产成人短视频在线观看 | 久久影库 | www.99在线| 日韩av不卡在线观看 | 久久综合伊人77777麻豆 | 欧美一区二区免费在线观看 | 日韩精品美女 | 日本aⅴ在线| 极品国产91在线网站 | 亚洲国产丝袜 | 青青草91 | 麻豆乱码国产一区二区三区 | 羞羞涩涩视频 | 亚洲视频福利 | 91日韩精品 | 免费成人av在线播放 | 国产在线观看免费高清 | 国产精品自拍av | 少妇精品久久久久www | 乐播av一区二区三区 | 亚洲成人777 | 精品h | 精品中文字幕在线播放 | av激情影院 | 好吊操av | 久伊人网| 国产精品色网 | 五月丁香啪啪 | 国模无码大尺度一区二区三区 | 日韩欧美精品一区二区三区 | 深夜视频一区二区 | 中文字幕乱伦视频 | 欧美精品成人一区二区在线观看 | 欧美jizzhd欧美18 | 激情图片网站 | 亚洲天堂视频在线观看 | 日韩福利社 | 亚洲va国产va天堂va久久 | 黄色大片网站在线观看 | 人妻互换一二三区激情视频 | 精品无码国产一区二区三区51安 | 特级毛片av | 成人性生活免费视频 | 久久久资源网 | www.com国产 | 91超薄肉色丝袜交足高跟凉鞋 | 欧美性猛交ⅹxx | 国产精品一区二区三区高潮 | 99产精品成人啪免费网站 | 日韩影视一区 | 伊人网影院 | 天码人妻一区二区三区在线看 | 中文字幕日韩专区 | 久久精品免费在线观看 | 亚洲综合二区 | 成年人晚上看的视频 | 黄色一级黄色片 | 人妻互换一区二区激情偷拍 | 懂色av蜜臀av粉嫩av分 | 亚洲av午夜精品一区二区三区 | 深夜福利在线免费观看 | 狠狠撸狠狠干 | 免费在线一区二区三区 | 色呦呦一区 | 中文字幕 成人 | 成年人晚上看的视频 | 熟妇熟女乱妇乱女网站 | av88av| 国产精品人人人人 | 欧洲黄色片 | aaa影院 | 日韩高清不卡一区 | 午夜青青草 | 国产在线中文字幕 | 亚洲精品无人区 | 800av免费在线观看 | 欧美亚洲韩国 | 中文字幕av免费 | 国产网站免费在线观看 | 日韩毛片大全 | 男人的亚洲天堂 | 干操网 | 女的高潮流时喷水图片大全 | 婷婷综合亚洲 | 日本一区二区三区网站 | 奴性白洁会所调教 | 国产精品300页 | a√天堂资源在线 | 午夜性激情 | 中日韩免费毛片 | 国产精品美女久久久久图片 |