1. 程式人生 > >SQLServer在日常使用中事物的開啟與回滾、提交

SQLServer在日常使用中事物的開啟與回滾、提交

最近在工作中,使用sqlserver2008作為資料庫,以前一直使用的是Oracle和MySQL,相對於oracle還是有很多區別的。下面我說說在使用事物的時候,sqlserver是如何使用的。

因為在工作中,需要為一張表添加了一個欄位,表內有十幾萬的資料,新增完欄位後這個欄位需要補充相應的資料,這個操作需要一個update來完成。雖然我寫了這個update,而且也比較肯定這個語句是沒有問題的,可是不怕一萬就怕萬一,謹慎點比較好,就想到使用事物,利用回滾來應付後面可能發生的失敗、錯誤等狀況。

在使用事物的時候,是以begin  TransAction 開始,如果有錯誤就執行RollbackTransAction 

來完成回滾,如果沒有錯誤,就執行 CommitTransAction ,我的程式碼如下:

Begin TransAction
update zc
		set
			zc.describe=(select top(1) fk.cjqk from ZJ110_FKD_FKD fk where fk.cjdbh = c.cjdbh order by len(fk.cjqk)desc,fk.fksj desc)
		from ZjCases zc
		inner join ZJ110_CJD_CJD c on c.cjdbh=zc.cjdbh
		left join ZJ110_JJD_JJD j on j.jjdbh=c.jjdbh
		left join Division d on d.divcodeorigin=c.sjdwdm
		where zc.describe is null and zc.source='P110';
這些執行完之後,去檢視我更新的部分是否正確,如果正確就執行
Commit TransAction

如果不正確,就需要回滾到我們開啟傷事物的那一刻,程式碼如下:
Rollback TransAction
相對oracle來說,我還是比較喜歡oracle的事物開啟與關閉,記下這些為日後遇到類似的問題能夠儘快解決打下基礎