在本文之前我讀過多篇關於事務的文章,大都說的比較深奧,可能讓新手也難以理解。 在此我們用非常簡單的例子講解一下事務的應用吧。
第一:我們先創建一個臨時表,填寫一些數據。
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
事務的機制很復雜,但在使用時我們只需要理解上面的順序即可。 由此我們可以進行程序細顆粒事務回滾的分析,在需要的地方正確的使用事務。