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

歡迎訪問 生活随笔!

生活随笔

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

数据库

SQL SERVER 事务处理

發(fā)布時間:2023/12/13 数据库 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL SERVER 事务处理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

<1>.事務(wù)的概念
????????? 事務(wù)是一個不可分割的工作邏輯單元。
<2>.為什么使用事物
????????? 可以防止錯誤的發(fā)生。
<3>.事物的作用
????????? 要么所有的操作全部完成,要么所有操作都不執(zhí)行。
<4>.什么是事物
????????? 事務(wù)是單個的工作單元
??????????? 如果某一事務(wù)成功,則在該事務(wù)中進行的所有的數(shù)據(jù)更改均會提交,稱為數(shù)據(jù)庫中的永久組成部分。
??????????? 如果事務(wù)遇到錯誤且必須取消或回滾,則所有數(shù)據(jù)更改均被清楚。
<5>.事務(wù)的特性
??????????? 事務(wù)必須具備以下四個屬性,簡稱ACID 屬性:
???????????? (1).原子性(Atomicity):事務(wù)是一個完整的操作。事務(wù)的各步操作是不可分的(原子的);要么都執(zhí)行,要么都不執(zhí)行。
???????????? (2).一致性(Consistency):當(dāng)事務(wù)完成時,數(shù)據(jù)必須處于一致狀態(tài)。
???????????? (3).隔離性(Isolation):對數(shù)據(jù)進行修改的所有并發(fā)事務(wù)是彼此隔離的,這表明事務(wù)必須是獨立的,它不應(yīng)以任何方式依賴于或影響其他事務(wù)。
???????????? (4).永久性(Durability):事務(wù)完成后,它對數(shù)據(jù)庫的修改被永久保持,事務(wù)日志能夠保持事務(wù)的永久性。
<6>.如何創(chuàng)建事務(wù)
???????????1. T-SQL使用下列語句來管理事務(wù):
???????????? (1).開始事務(wù):BEGIN TRANSACTION
???????????? (2).提交事務(wù):COMMIT TRANSACTION
???????????? (3).回滾(撤銷)事務(wù):ROLLBACK TRANSACTION
?????????? 2.? 一旦事務(wù)提交或回滾,則事務(wù)結(jié)束。
???????????? (1).判斷某條語句執(zhí)行是否出錯:
???????????? (2).使用全局變量@@ERROR;
???????????? 3).@@ERROR只能判斷當(dāng)前一條T-SQL語句執(zhí)行是否有錯,為了判斷事務(wù)中所有T-SQL語句是否有錯,我們需要對錯誤進行累計;??????????
?????????????? 如:SET @errorSum=@errorSum+@@error
<7>.事務(wù)的分類
??????????? (1).顯示事務(wù):用BEGIN TRANSACTION明確指定事務(wù)的開始,這是最常用的事務(wù)類型
??????????? (2).隱性事務(wù):通過設(shè)置SET IMPLICIT_TRANSACTIONS ON 語句,將隱性事務(wù)模式設(shè)置為打開,下一個語句自動啟動一個新事務(wù)。當(dāng)該事務(wù)完成時,再????????????? 下一個 T-SQL 語句又將啟動一個新事務(wù)
??????????? (3).自動提交事務(wù):這是 SQL Server 的默認(rèn)模式,它將每條單獨的 T-SQL 語句視為一個事務(wù),如果成功執(zhí)行,則自動提交;如果錯誤,則自動回滾。
<8>.創(chuàng)建事務(wù)的原則
??????????? 創(chuàng)建事務(wù)時要遵守一下的原則:
???????????? (1).事務(wù)要盡可能的簡短
???????????? (2).在事務(wù)中訪問的數(shù)據(jù)量要盡量最少
???????????? (3).瀏覽數(shù)據(jù)是盡量不要打開事務(wù)
???????????? (4).在事務(wù)處理期間不要請求用戶輸入
<9>.Transact-SQL中使用哪些語句管理事務(wù)?
??????????? 開始事務(wù):begin transaction
??????????? 提交事務(wù):commit transaction
??????????? 回滾事務(wù):rollback transaction?
<10>.使用事務(wù)的注意事項
??????????? (1).在每個操作之后,都要檢查@@error或rowcount的值;
??????????? (2).當(dāng)一個事務(wù)結(jié)束之后,緊跟在事務(wù)之后的T-SQL代碼可以繼續(xù)執(zhí)行,但是出錯后不能再回滾事務(wù)了;
??????????? (3).已經(jīng)提交完畢的事務(wù)會將數(shù)據(jù)正式寫入數(shù)據(jù)庫;
??????????? (4).在一個事務(wù)執(zhí)行時,如果發(fā)生如斷電等意外事件,則在下次重新啟動系統(tǒng)時,該事務(wù)會自動回滾;
??????????? (6).在事務(wù)里發(fā)生錯誤是的事務(wù)無法執(zhí)行下去,事務(wù)也會自動回滾;
??????????? (7).無法回滾的語句不能在事務(wù)中使用。
<11>.事務(wù)的工作原理
??????????? (1).在事務(wù)開始時,SQLServer會將要修改的數(shù)據(jù)鎖定,同時創(chuàng)建一個臨時的事務(wù)日志,在該臨時的事務(wù)日志里存放更改的數(shù)據(jù)和更改的存儲過程。
??????????? (2).在事務(wù)未提交之前,事務(wù)中所有的數(shù)據(jù)操作是臨時的,一旦發(fā)生數(shù)據(jù)操作失敗,就使用臨時日志里的數(shù)據(jù)去回滾事務(wù)操作,并解除鎖定。在事務(wù)????????????? 被成功提交后,數(shù)據(jù)庫就將臨時的事務(wù)日志的內(nèi)容存儲到數(shù)據(jù)庫中,此時事務(wù)操作完成。
<12>.事務(wù)的隔離級別
??????????? 在SQL Server 中事務(wù)的隔離級別由低到高分為5個級別
?????????????? (1).Read uncommitted:不隔離數(shù)據(jù)
?????????????? (2).Read committed:不允許讀取沒有提交的數(shù)據(jù)
?????????????? (3).Repeatable Read:在事務(wù)中鎖定所讀取的數(shù)據(jù)不讓別人修改和刪除。
???????????????(4).Snashot:快照隔離,可以為讀取數(shù)據(jù)的事務(wù)提供所需數(shù)據(jù)的一個已提交的版本。
?????????????? (5).Serializable:將事務(wù)所要用到的數(shù)據(jù)表全部鎖定,不與許其它事務(wù)添加、修改和刪除數(shù)據(jù)。

?

轉(zhuǎn)載于:https://www.cnblogs.com/ranfang/archive/2013/05/03/3057237.html

總結(jié)

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

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