MySQL中insert觸發(fā)器(插入)詳細(xì)說明
發(fā)表時(shí)間:2023-08-28 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]INSERT觸發(fā)器在有了前面的基礎(chǔ)知識(shí)后,我們現(xiàn)在來看所支持的每種觸發(fā)器類型以及它們的差別。INSERT 觸發(fā)器在 INSERT 語句執(zhí)行之前或之后執(zhí)行。需要知道以下幾點(diǎn):1.在 INSERT 觸發(fā)器代碼內(nèi),可引用一個(gè)名為 NEW 的虛擬表,訪問被插入的行;2.在 BEFORE INSERT 觸發(fā)...
INSERT觸發(fā)器在有了前面的基礎(chǔ)知識(shí)后,我們現(xiàn)在來看所支持的每種觸發(fā)器類型以及它們的差別。
INSERT 觸發(fā)器在 INSERT 語句執(zhí)行之前或之后執(zhí)行。需要知道以下幾點(diǎn):
1.在 INSERT 觸發(fā)器代碼內(nèi),可引用一個(gè)名為 NEW 的虛擬表,訪問被插入的行;
2.在 BEFORE INSERT 觸發(fā)器中, NEW 中的值也可以被更新(允許更改被插入的值);
3.對(duì)于 AUTO_INCREMENT 列, NEW 在 INSERT 執(zhí)行之前包含 0 ,在 INSERT執(zhí)行之后包含新的自動(dòng)生成值。
下面舉一個(gè)例子(一個(gè)實(shí)際有用的例子)。 AUTO_INCREMENT 列具有MySQL自動(dòng)賦予的值。確定新生成值的方法,但下面是一種更好的方法:
輸入:
create trigger neworder after insert on orders for each row select new .order_num;
分析:此代碼創(chuàng)建一個(gè)名為 neworder 的觸發(fā)器,它按照 AFTER INSERT ON orders 執(zhí)行。在插入一個(gè)新訂單到 orders 表時(shí),MySQL生成一個(gè)新訂單號(hào)并保存到 order_num 中。觸發(fā)器從 NEW.order_num 取得這個(gè)值并返回它。此觸發(fā)器必須按照 AFTER INSERT 執(zhí)行,因?yàn)樵?BEFORE INSERT 語句執(zhí)行之前,新 order_num 還沒有生成。對(duì)于 orders 的每次插入使用這個(gè)觸發(fā)器將總是返回新的訂單號(hào)。
為測(cè)試這個(gè)觸發(fā)器,試著插入一下新行,如下所示:
輸入:
insert into orders(order_date,cust_id) values(now(),10001);
輸出:
分析:orders 包 含 3 個(gè) 列 。 order_date 和 cust_id 必 須 給 出 ,order_num 由MySQL自動(dòng)生成,而現(xiàn)在 order_num 還自動(dòng)被返回。
BEFORE 或 AFTER ? 通常,將 BEFORE 用于數(shù)據(jù)驗(yàn)證和凈化(目的是保證插入表中的數(shù)據(jù)確實(shí)是需要的數(shù)據(jù))。本提示也適用于 UPDATE 觸發(fā)器。
【相關(guān)推薦】
1. mysql免費(fèi)視頻教程
2. mysql觸發(fā)器簡(jiǎn)介及如何創(chuàng)建和刪除觸發(fā)器
3. MySQL使用字符集和校對(duì)順序使用教程
4. MySQL字符集和校對(duì)順序簡(jiǎn)介
5. MySQL事務(wù)-使用保留點(diǎn)、更改默認(rèn)的提交行為詳解
以上就是MySQL中insert觸發(fā)器(插入)詳解的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
學(xué)習(xí)教程快速掌握從入門到精通的SQL知識(shí)。