本篇文章為大家展示了SQL觸發(fā)器的作用是什么,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
我們提供的服務(wù)有:做網(wǎng)站、網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、博湖ssl等。為1000+企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢(xún)和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的博湖網(wǎng)站制作公司
觸發(fā)器的作用
1、安全性,可以基于數(shù)據(jù)庫(kù)的值使用戶(hù)具有操作數(shù)據(jù)庫(kù)的某種權(quán)利。
2、審計(jì),可以跟蹤用戶(hù)對(duì)數(shù)據(jù)庫(kù)的操作。
3、實(shí)現(xiàn)復(fù)雜的非標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)相關(guān)完整性規(guī)則,觸發(fā)器可以對(duì)數(shù)據(jù)庫(kù)中相關(guān)的表進(jìn)行連環(huán)更新。
4、觸發(fā)器能夠拒絕或回退那些破壞相關(guān)完整性的變化,取消試圖進(jìn)行數(shù)據(jù)更新的事務(wù)。當(dāng)插入一個(gè)與其主健不匹配的外部鍵時(shí),這種觸發(fā)器會(huì)起作用。
5、同步實(shí)時(shí)地復(fù)制表中的數(shù)據(jù)
6、自動(dòng)計(jì)算數(shù)據(jù)值,如果數(shù)據(jù)的值達(dá)到了一定的要求,則進(jìn)行特定的處理。
MySQL中死鎖
死鎖的關(guān)鍵在于:兩個(gè)(或以上)的Session加鎖的順序不一致。
那么對(duì)應(yīng)的解決死鎖問(wèn)題的關(guān)鍵就是:讓不同的session加鎖有次序
需求:將投資的錢(qián)拆成幾份隨機(jī)分配給借款人。
起初業(yè)務(wù)程序思路是這樣的:
投資人投資后,將金額隨機(jī)分為幾份,然后隨機(jī)從借款人表里面選幾個(gè),然后通過(guò)一條條select for update 去更新借款人表里面的余額等。
例如兩個(gè)用戶(hù)同時(shí)投資,A用戶(hù)金額隨機(jī)分為2份,分給借款人1,2
B用戶(hù)金額隨機(jī)分為2份,分給借款人2,1
由于加鎖的順序不一樣,死鎖當(dāng)然很快就出現(xiàn)了。
對(duì)于這個(gè)問(wèn)題的改進(jìn)很簡(jiǎn)單,直接把所有分配到的借款人直接一次鎖住就行了。
Select * from xxx where id in (xx,xx,xx) for update
在in里面的列表值mysql是會(huì)自動(dòng)從小到大排序,加鎖也是一條條從小到大加的鎖
上述內(nèi)容就是SQL觸發(fā)器的作用是什么,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。