MySQL中insert觸發器(插入)詳細說明
發表時間:2023-08-28 來源:明輝站整理相關軟件相關文章人氣:
[摘要]INSERT觸發器在有了前面的基礎知識后,我們現在來看所支持的每種觸發器類型以及它們的差別。INSERT 觸發器在 INSERT 語句執行之前或之后執行。需要知道以下幾點:1.在 INSERT 觸發器代碼內,可引用一個名為 NEW 的虛擬表,訪問被插入的行;2.在 BEFORE INSERT 觸發...
INSERT觸發器在有了前面的基礎知識后,我們現在來看所支持的每種觸發器類型以及它們的差別。
INSERT 觸發器在 INSERT 語句執行之前或之后執行。需要知道以下幾點:
1.在 INSERT 觸發器代碼內,可引用一個名為 NEW 的虛擬表,訪問被插入的行;
2.在 BEFORE INSERT 觸發器中, NEW 中的值也可以被更新(允許更改被插入的值);
3.對于 AUTO_INCREMENT 列, NEW 在 INSERT 執行之前包含 0 ,在 INSERT執行之后包含新的自動生成值。
下面舉一個例子(一個實際有用的例子)。 AUTO_INCREMENT 列具有MySQL自動賦予的值。確定新生成值的方法,但下面是一種更好的方法:
輸入:
create trigger neworder after insert on orders for each row select new .order_num;
分析:此代碼創建一個名為 neworder 的觸發器,它按照 AFTER INSERT ON orders 執行。在插入一個新訂單到 orders 表時,MySQL生成一個新訂單號并保存到 order_num 中。觸發器從 NEW.order_num 取得這個值并返回它。此觸發器必須按照 AFTER INSERT 執行,因為在 BEFORE INSERT 語句執行之前,新 order_num 還沒有生成。對于 orders 的每次插入使用這個觸發器將總是返回新的訂單號。
為測試這個觸發器,試著插入一下新行,如下所示:
輸入:
insert into orders(order_date,cust_id) values(now(),10001);
輸出:

分析:orders 包 含 3 個 列 。 order_date 和 cust_id 必 須 給 出 ,order_num 由MySQL自動生成,而現在 order_num 還自動被返回。
BEFORE 或 AFTER ? 通常,將 BEFORE 用于數據驗證和凈化(目的是保證插入表中的數據確實是需要的數據)。本提示也適用于 UPDATE 觸發器。
【相關推薦】
1. mysql免費視頻教程
2. mysql觸發器簡介及如何創建和刪除觸發器
3. MySQL使用字符集和校對順序使用教程
4. MySQL字符集和校對順序簡介
5. MySQL事務-使用保留點、更改默認的提交行為詳解
以上就是MySQL中insert觸發器(插入)詳解的詳細內容,更多請關注php中文網其它相關文章!
學習教程快速掌握從入門到精通的SQL知識。