MySQL中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);

輸出:

MySQL中insert觸發器(插入)詳解

分析: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免費視頻教程

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享