MySQL UPDATE觸發(fā)器(更新)及觸發(fā)器深度解析
發(fā)表時(shí)間:2023-08-28 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]UPDATE觸發(fā)器UPDATE 觸發(fā)器在 UPDATE 語句執(zhí)行之前或之后執(zhí)行。需要知道以下幾點(diǎn):1.在 UPDATE 觸發(fā)器代碼中,你可以引用一個(gè)名為 OLD 的虛擬表訪問以前( UPDATE 語句前)的值,引用一個(gè)名為 NEW 的虛擬表訪問新更新的值;2.在 BEFORE UPDATE 觸發(fā)器...
UPDATE觸發(fā)器UPDATE 觸發(fā)器在 UPDATE 語句執(zhí)行之前或之后執(zhí)行。需要知道以下幾點(diǎn):
1.在 UPDATE 觸發(fā)器代碼中,你可以引用一個(gè)名為 OLD 的虛擬表訪問以前( UPDATE 語句前)的值,引用一個(gè)名為 NEW 的虛擬表訪問新更新的值;
2.在 BEFORE UPDATE 觸發(fā)器中, NEW 中的值可能也被更新(允許更改將要用于 UPDATE 語句中的值);
3.OLD 中的值全都是只讀的,不能更新。
下面的例子保證州名縮寫總是大寫(不管 UPDATE 語句中給出的是大寫還是小寫):
輸入:
create trigger updatevendor before update on vends for each row set new.vend_state = upper(new.vend_state);
分析:顯然,任何數(shù)據(jù)凈化都需要在 UPDATE 語句之前進(jìn)行,就像這個(gè)例子中一樣。每次更新一個(gè)行時(shí), NEW.vend_state 中的值(將用來更新表行的值)都用 Upper(NEW.vend_state) 替換。
關(guān)于觸發(fā)器的進(jìn)一步介紹
在結(jié)束本章之前,我們?cè)俳榻B一些使用觸發(fā)器時(shí)需要記住的重點(diǎn)。
1.與其他DBMS相比,MySQL 5中支持的觸發(fā)器相當(dāng)初級(jí)。未來的MySQL版本中有一些改進(jìn)和增強(qiáng)觸發(fā)器支持的計(jì)劃。
2.創(chuàng)建觸發(fā)器可能需要特殊的安全訪問權(quán)限,但是,觸發(fā)器的執(zhí)行是自動(dòng)的。如果 INSERT 、 UPDATE 或 DELETE 語句能夠執(zhí)行,則相關(guān)的觸發(fā)器也能執(zhí)行。
3.應(yīng)該用觸發(fā)器來保證數(shù)據(jù)的一致性(大小寫、格式等)。在觸發(fā)器中執(zhí)行這種類型的處理的優(yōu)點(diǎn)是它總是進(jìn)行這種處理,而且是透明地進(jìn)行,與客戶機(jī)應(yīng)用無關(guān)。
4.觸發(fā)器的一種非常有意義的使用是創(chuàng)建審計(jì)跟蹤。使用觸發(fā)器,把更改(如果需要,甚至還有之前和之后的狀態(tài))記錄到另一個(gè)表非常容易。
5.遺憾的是,MySQL觸發(fā)器中不支持 CALL 語句。這表示不能從觸發(fā)器內(nèi)調(diào)用存儲(chǔ)過程。所需的存儲(chǔ)過程代碼需要復(fù)制到觸發(fā)器內(nèi)。
【相關(guān)推薦】
1. mysql免費(fèi)視頻教程
2. MySQL delete觸發(fā)器(刪除)用法詳解
3. MySQL中insert觸發(fā)器(插入)詳解
4. mysql觸發(fā)器簡介及如何創(chuàng)建和刪除觸發(fā)器
5. MySQL使用字符集和校對(duì)順序使用教程
以上就是MySQL UPDATE觸發(fā)器(更新)及觸發(fā)器深度解析的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
學(xué)習(xí)教程快速掌握從入門到精通的SQL知識(shí)。