SQLServer傻瓜教程 — 事務


   在本文之前我讀過多篇關於事務的文章,大都說的比較深奧,可能讓新手也難以理解。 在此我們用非常簡單的例子講解一下事務的應用吧。

    

 第一:我們先創建一個臨時表,填寫一些數據。

CREATE TABLE #tab (id INT, country NVARCHAR(10), popu INT )
INSERT INTO #tab VALUES (1, '中國', '600')
INSERT INTO #tab VALUES (2, '美國', '100')
INSERT INTO #tab VALUES (3, '加拿大', '100')
INSERT INTO #tab VALUES (4, '英國', '200')
INSERT INTO #tab VALUES (5, '法國', '300')
INSERT INTO #tab VALUES (6, '日本', '250')
INSERT INTO #tab VALUES (7, '德國', '200')
INSERT INTO #tab VALUES (8, '墨西哥', '50')
INSERT INTO #tab VALUES (9, '印度', '250')

以上我們就得到了一個臨時表數據。

第二: 寫幾句常用事務語句。

BEGIN TRANSACTION  
COMMIT  
ROLLBACK

 

好需要的數據和語句我們准備好了。 仔細看下面操作:

-- 我們下執行一下SQL 開始事務
BEGIN TRANSACTION

然后我們直接刪除#tab

DELETE FROM #tab

現在肯定查詢不到數據了。

現在我們是執行了事務之后刪除的#tab( 一定要先執行事務,不然你就會把數據直接給KO掉了。)

注 : 假如我們上一步我們執行錯誤,需要回復數據。我們需要執行一下

--回滾
ROLLBACK

我們的數據又回來了。

 

注 : 假如上一步我們執行正確了, 你也不要忘記執行下面這句 (這句不執行的話會造成用戶死鎖。)

-- 執行
COMMIT

 

理解很簡單吧。事務就是 先執行BEGIN TRANSACTION   錯誤執行 ROLLBACK  正確執行 COMMIT   所以我們會經常用到這種格式的事務。

BEGIN TRANSACTION    -- 開始事務
BEGIN TRY  -- 捕捉異常
         DELETE FROM #tab
         COMMIT  -- 無異常執行
END TRY
BEGIN CATCH
         ROLLBACK  -- 發現異常 回滾
END CATCH

 

事務的機制很復雜,但在使用時我們只需要理解上面的順序即可。 由此我們可以進行程序細顆粒事務回滾的分析,在需要的地方正確的使用事務。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM