有沒有一種方法而沒有要更新的記錄在審計表中的記錄(通過觸發器)被鎖定,由於其觸發觸發器是在事務內的更新。SQL更新沒有數據庫鎖定
因此,我們有一個用戶表和一個觸發器,用於插入,更新,刪除和記錄更改後的值給某個審計表,但我不希望審計表被鎖定,以防止觸發其他觸發器來執行操作在審計表上。
編輯:只是爲了澄清,我有問題是多個表通過不同的觸發器到同一個審計表上報,這樣的更新一個表鎖被更新的所有其他表。至於關於事務回滾是什麼的擔憂,這不是一個問題,因爲審計表僅用於更改跟蹤,並且如果記錄回滾,如果審計表不回滾則不是問題。
我想到了一種可能的方式,但我不知道這是否可行(或如何去做),有沒有一種方法可以讓觸發器使用新連接而不是最初調用的連接?
如果事務回滾,您是否真的想要另一個進程在審計表中讀取記錄? – 2011-02-03 23:57:44
我會假設,是的,你想要審覈表的數據被鎖定。您真正的問題可能是您在審計表上有一個連續的(可能是集羣的)主鍵索引,這會對審計表的葉節點進行熱點檢查,導致審計表中的所有插入操作全部進入相同的葉節點頁面時間。將主鍵更改爲更隨機的排序方式,這可以解決您的鎖定問題。 – 2011-02-04 00:10:23