1、觸發器
不能直接返回查詢結果,意味着不能很實用select語句直接返回查詢結果,可以select into 變量名存入變量中。
CREATE TRIGGER newproduct
AFTER INSERT ON products
FOR EACH ROW
select 'abc';
會報錯。表明使用錯誤。
是MySQL響應以下任意語句而自動執行的一條MySQL語句(或位於 BEGIN 和 END 語句之間的一組語句):
DELETE ; INSERT ;
UPDATE 。
2、保持每個數據庫的觸發器名唯一
3、創建觸發器
CREATE TRIGGER newproduct
AFTER INSERT ON products
FOR EACH ROW
BEGIN
DECLARE str varchar(20);
SELECT 'Product added' INTO str;
INSERT INTO message(mess)
VALUES('insert succeed');
END;
4、僅支持表
只有表才支持觸發器,視圖不支持(臨時表也不支持)。
5、刪除觸發器
DROP TRIGGER newproduct;
6、INSERT觸發器
INSERT 觸發器在 INSERT 語句執行之前或之後執行。需要知道以下幾
點:
在 INSERT 觸發器代碼內,可引用一個名爲 NEW 的虛擬表,訪問被
插入的行;
在 BEFORE INSERT 觸發器中, NEW 中的值也可以被更新(允許更改
被插入的值);
對於 AUTO_INCREMENT 列, NEW 在 INSERT 執行之前包含 0 ,在 INSERT
執行之後包含新的自動生成值。
7、DELETE觸發器
DELETE 觸發器在 DELETE 語句執行之前或之後執行。需要知道以下兩
點:
在 DELETE 觸發器代碼內,你可以引用一個名爲 OLD 的虛擬表,訪
問被刪除的行;
OLD 中的值全都是隻讀的,不能更新。
8、UPDATE觸發器
UPDATE 觸發器在 UPDATE 語句執行之前或之後執行。需要知道以下幾
點:
在 UPDATE 觸發器代碼中,你可以引用一個名爲 OLD 的虛擬表訪問
以前( UPDATE 語句前)的值,引用一個名爲 NEW 的虛擬表訪問新
更新的值;
在 BEFORE UPDATE 觸發器中, NEW 中的值可能也被更新(允許更改
將要用於 UPDATE 語句中的值);
OLD 中的值全都是隻讀的,不能更新。
9、遺憾的是,MySQL觸發器中不支持 CALL 語句。這表示不能從觸發
器內調用存儲過程。所需的存儲過程代碼需要複製到觸發器內