# L15 Transactions交易 ###### tags: `SQL` ## 概述 **Transactions**可確保資料的多次異動**同時完整**的寫入資料庫 **Locks**避免同時多人修改時產生衝突  當Begin TRAN一路執行到Commit TRAN後, 紀錄會被儲存在**Log檔**中,等待**Checkpoint檢查點寫入** If Checkpoint前完成交易,寫入資料庫 If Checkpoint後完成交易,等待下一個Checkpoint寫入 :anger: If到下一個Checkpoint但系統故障 等到系統復原(Recovery)時 未完成交易的會被**Roll Back還原** 已完成交易的會被**Roll Forward寫入**(Writing)  ## Transactions使用原則 * 讓Checkpoint時間不要間隔太久 * 避免在Transactions中參雜使用者交談介面,ex.使用者輸入資料 * 避免使用巢狀式交易 * 可用 ==Select **@@transaction**== 查詢Transaction在第幾層 * 使用Rollback Tran 讓@@trancount=0 :::danger **必考!** 工具-> 選項-> 查詢執行-> ANSI-> **SET IMPLICIT_TRANSACTIONS** 預設為Off 當打勾(SET Implicit_Transactions **ON**)時,所有動作皆被視為交易 ->使用者需自己下Commit Tran 或 Rollback transaction  *在選項改任何設定,都要新增查詢(用新的視窗)才能看到改變* ::: ## Transactions限制 * Backup Log * Restore Log * Create DataBase * Alter DataBase * Drop DataBase * Restore DataBase * Reconfigure * Update Statistics
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up