色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql 腳本寫觸發器

傅智翔2年前9瀏覽0評論

MySQL觸發器是一種保存在數據庫服務器上的程序,用于在數據庫的表上自動執行一些操作。當指定的事件(INSERT、UPDATE、DELETE)在給定的表中發生時,MySQL會自動調用觸發器中的語句執行。在本文中,我們將介紹如何使用MySQL腳本編寫觸發器。

創建觸發器

要創建MySQL觸發器,我們需要使用CREATE TRIGGER語句。該語句具有以下語法:

CREATE TRIGGER trigger_name
trigger_time trigger_event ON table_name
FOR EACH ROW
BEGIN
-- 觸發器語句
END;

其中,trigger_name是觸發器的名稱,trigger_time指定觸發器何時調用(可以是BEFORE或AFTER),trigger_event指定要觸發的事件(可以是INSERT、UPDATE或DELETE),table_name是要在其上創建觸發器的表的名稱。

在觸發器中使用OLD和NEW關鍵字

在MySQL觸發器中,有兩個關鍵字OLD和NEW分別表示舊行和新行。對于INSERT事件,只有NEW關鍵字可用;對于UPDATE事件,舊行和新行都可用;對于DELETE事件,只有舊行可用。下面是一個例子:

CREATE TRIGGER before_user_update
BEFORE UPDATE ON user
FOR EACH ROW
BEGIN
IF NEW.name<>OLD.name THEN
INSERT INTO user_log (user_id, action) 
VALUES (NEW.id, CONCAT('User name changed from ', OLD.name, ' to ', NEW.name));
END IF;
END;

使用DELIMITER聲明分隔符

我們可以使用DELIMITER語句來告訴MySQL在何處結束語句。這對于在觸發器中使用多個語句非常有用。例如,在上面的例子中,我們使用了多個語句。在CREATE TRIGGER語句之前,我們使用DELIMITER語句將分隔符設置為“$$”:

DELIMITER $$
CREATE TRIGGER before_user_update
BEFORE UPDATE ON user
FOR EACH ROW
BEGIN
IF NEW.name<>OLD.name THEN
INSERT INTO user_log (user_id, action) 
VALUES (NEW.id, CONCAT('User name changed from ', OLD.name, ' to ', NEW.name));
END IF;
END$$
DELIMITER ;

刪除觸發器

如果要刪除觸發器,我們可以使用DROP TRIGGER語句。該語句的語法如下:

DROP TRIGGER [IF EXISTS] trigger_name

其中,trigger_name是要刪除的觸發器的名稱。如果使用IF EXISTS選項,則在不存在該觸發器的情況下也不會出現錯誤。

總之,MySQL觸發器是自動觸發的程序,它可以在指定的事件發生時自動調用。在創建MySQL觸發器時,我們需要使用CREATE TRIGGER語句。另外,我們可以在觸發器中使用OLD和NEW關鍵字引用舊行和新行。最后,我們可以使用DROP TRIGGER語句刪除觸發器。