mysql 觸發器

對某個表進行【增/刪/改】操做的先後若是但願觸發某個特定的行爲時,能夠使用觸發器,觸發器用於定製用戶對錶的行進行【增/刪/改】先後的行爲。html

一、建立基本語法

觸發器能放在執行 sql 語句的6個關鍵位置。sql

格式:ide

image

操做類型及語法:ui

# 插入前
CREATE TRIGGER tri_before_insert_tb1 BEFORE INSERT ON tb1 FOR EACH ROW
BEGIN
    ...
END

# 插入後
CREATE TRIGGER tri_after_insert_tb1 AFTER INSERT ON tb1 FOR EACH ROW
BEGIN
    ...
END

# 刪除前
CREATE TRIGGER tri_before_delete_tb1 BEFORE DELETE ON tb1 FOR EACH ROW
BEGIN
    ...
END

# 刪除後
CREATE TRIGGER tri_after_delete_tb1 AFTER DELETE ON tb1 FOR EACH ROW
BEGIN
    ...
END

# 更新前
CREATE TRIGGER tri_before_update_tb1 BEFORE UPDATE ON tb1 FOR EACH ROW
BEGIN
    ...
END

# 更新後
CREATE TRIGGER tri_after_update_tb1 AFTER UPDATE ON tb1 FOR EACH ROW
BEGIN
    ...
END
觸發器

例子:spa

delimiter //
CREATE TRIGGER tri_after_insert_tb1 AFTER INSERT ON tb1 FOR EACH ROW
BEGIN
    IF NEW. num = 666 THEN
        INSERT INTO tb2 (NAME)
        VALUES
            ('666'),
            ('666') ;
    ELSEIF NEW. num = 555 THEN
        INSERT INTO tb2 (NAME)
        VALUES
            ('555'),
            ('555') ;
    END IF;
END//
delimiter ;
例子

說明:code

表示當對 tb1 表進行數據 插入後 操做:htm

一、若是插入的num值爲 666 ,則給對應的 tb2 表增長 兩項 666 的數據。blog

二、若是 tb1 表插入的num數據爲 555,則給 tb2 表增長兩項 555 的數據。ip


特別的:get

  • NEW表示即將插入的數據行,經過每項的名字便可獲取對應項的內容。
  • OLD表示即將刪除的數據行,經過每項的名字便可獲取對應項的內容。


二、刪除觸發器

DROP TRIGGER tri_after_insert_tb1;


三、使用觸發器

觸發器沒法由用戶直接調用,而是由對錶的【增/刪/改】操做被動引起的。

相關文章
相關標籤/搜索