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