共計 873 個字符,預計需要花費 3 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
本篇文章為大家展示了 SQL 觸發器的作用是什么,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
觸發器的作用
1、安全性,可以基于數據庫的值使用戶具有操作數據庫的某種權利。
2、審計,可以跟蹤用戶對數據庫的操作。
3、實現復雜的非標準的數據庫相關完整性規則,觸發器可以對數據庫中相關的表進行連環更新。
4、觸發器能夠拒絕或回退那些破壞相關完整性的變化,取消試圖進行數據更新的事務。當插入一個與其主健不匹配的外部鍵時,這種觸發器會起作用。
5、同步實時地復制表中的數據
6、自動計算數據值,如果數據的值達到了一定的要求,則進行特定的處理。
mysql 中死鎖:是指兩個或兩個以上的進程在執行過程中, 因爭奪資源而造成的一種互相等待的現象, 若無外力作用,它們都將無法推進下去. 此時稱系統處于死鎖狀態或系統產生了死鎖,這些永遠在互相等待的進程稱為死鎖進程。表級鎖不會產生死鎖. 所以解決死鎖主要還是針對于最常用的 InnoDB。
死鎖的關鍵在于:兩個 (或以上) 的 Session 加鎖的順序不一致。
那么對應的解決死鎖問題的關鍵就是:讓不同的 session 加鎖有次序
mysql 中死鎖案例
需求:將投資的錢拆成幾份隨機分配給借款人。
起初業務程序思路是這樣的:
投資人投資后,將金額隨機分為幾份,然后隨機從借款人表里面選幾個,然后通過一條條 select for update 去更新借款人表里面的余額等。
例如兩個用戶同時投資,A 用戶金額隨機分為 2 份,分給借款人 1,2
B 用戶金額隨機分為 2 份,分給借款人 2,1
由于加鎖的順序不一樣,死鎖當然很快就出現了。
對于這個問題的改進很簡單,直接把所有分配到的借款人直接一次鎖住就行了。
Select * from xxx where id in (xx,xx,xx) for update
在 in 里面的列表值 mysql 是會自動從小到大排序,加鎖也是一條條從小到大加的鎖
上述內容就是 SQL 觸發器的作用是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注丸趣 TV 行業資訊頻道。
向 AI 問一下細節