在SQL Server中使用rollback會回滾所有的未提交事務狀態,但是有些時候我們只需要回滾部分語句,把不需要回滾的語句提到事務外面來,雖然是個方法,但是卻破壞了事務的ACID。
SQL中使用事務保存點 即可解決這個問題.
一.SQL 事務中存在錯誤信息 進行Catch 回滾事務時
二.SQL回滾局部信息時
回滾保存點B時 即保存點以下部分均要回滾,
切記:使用保存點 無論try 或 catch 代碼塊 除提交或回滾保存點外,都要COMMIT或 ROLLBACK完整事務.
使用場景:當操作數據時前校驗數據成本太高且數據出錯率不高時 可采用.eg:用戶下單 檢查庫存信息是否>0時 可以設置庫存量需>=0的約束 當更新庫時信息小于0即出錯 進行事務回滾 并查詢返回當前庫存信息