# [資料庫] 交易控制 Transactions ###### tags: `資料庫` `sql` [TOC] ### 組成交易控制的主要項目 * 確認交易 > COMMIT * 放棄交易 > ROLLBACK (all-or-nothing) * 設定交易儲存點 > `Save Transaction 儲存點名稱` > **SELECT:X** > > **DML(INSERT,UPDATE,DELETE):V** > 預設AUTO-COMMIT → 透過交易控制 → USER-COMMIT 使用者確認或放棄 > **DCL(GRANT,REVOKE):V** > AUTO-COMMIT 自動確認(不能改變,無法控制) - ### 步驟 #### 1. `BEGIN Transaction` 設定交易起始點 #### 2. 結束 `COMMIT`, `ROLLBACK` 確認或放棄交易 - ### 範例 (儲存點) ```=sql /* 開始交易控制 (Transaction) */ BEGIN Transaction; UPDATE order_list SET commplan = 'A' WHERE order_id = 615; SELECT * FROM order_list; /* 設立儲存點 (tr1) */ SAVE Transaction tr1; UPDATE order_list SET commplan = 'A' WHERE order_id = 616; UPDATE order_list SET commplan = 'B' WHERE order_id = 617; SELECT * FROM order_list; /* 取消交易並返回指定儲存點 (返回tr1) */ ROLLBACK Transaction tr1; /* 確認交易 */ COMMIT tran; SELECT * FROM order_list; ``` ### :triangular_flag_on_post:小標題 - 項目1 *引言* 項目描述`檔案名` --- 資料來源: [\[MS SQL\] 9. 資料庫交易 Database Transactions](https://chenyayi805.medium.com/ms-sql-9-%E8%B3%87%E6%96%99%E5%BA%AB%E4%BA%A4%E6%98%93-database-transactions-7727b5c5dab9) [Oracle資料庫 - \[Day23\]交易控制](https://ithelp.ithome.com.tw/articles/10279317)