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

巴扎黑
發布: 2017-05-19 15:25:42
原創
6682 人瀏覽過

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;
登入後複製

分析:此程式碼建立一個名為new​​order 的觸發器,它會依照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事務-使用保留點、變更預設的提交行為詳解

#

以上是MySQL中insert觸發器(插入)詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板