Mysql 简明教程
MySQL - After Delete Trigger
一般来说, Trigger 被定义为对事件的响应。在 MySQL 中,触发器被称为特殊存储过程,因为它不需要像其他存储过程那样显式调用。触发器会在所需事件触发时自动执行。触发器分为两类:Before Triggers 和 After Triggers。
这些触发器可以响应表上的插入操作、更新操作或删除操作。因此,每当执行 INSERT、UPDATE 或 DELETE 语句时,这些特殊存储过程就会响应。
MySQL After Delete Trigger
After Delete 触发器是 MySQL 数据库支持的行级触发器。此触发器在从数据库表行中删除值后立即执行。
当在数据库中执行 DELETE 语句时,会首先执行触发器,然后从表中删除该值。
Syntax
以下是创建 MySQL 中 AFTER DELETE 触发器语法 -
CREATE TRIGGER trigger_name
AFTER DELETE ON table_name FOR EACH ROW
BEGIN
-- trigger body
END;
Example
在此示例中,我们创建一个名为“CUSTOMERS”的表,使用以下查询来演示 AFTER DELETE 触发器 -
CREATE TABLE CUSTOMERS(
ID INT NOT NULL,
NAME VARCHAR(20) NOT NULL,
AGE INT NOT NULL,
ADDRESS VARCHAR(25),
SALARY DECIMAL(18, 2),
PRIMARY KEY(ID)
);
使用以下 INSERT 语句向创建的表中插入值 -
INSERT INTO CUSTOMERS VALUES
(1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ),
(2, 'Khilan', 25, 'Delhi', 1500.00 ),
(3, 'Kaushik', 23, 'Kota', 2000.00 ),
(4, 'Chaitali', 25, 'Mumbai', 6500.00 ),
(5, 'Hardik', 27, 'Bhopal', 8500.00 ),
(6, 'Komal', 22, 'MP', 4500.00 ),
(7, 'Muffy', 24, 'Indore', 10000.00 );
Creating Another Table:
现在,让我们创建一个另一个空表,以存储从主表 'CUSTOMERS' 中删除的所有以前客户 -
CREATE TABLE OLD_CUSTOMERS (
ID INT NOT NULL,
NAME VARCHAR(20) NOT NULL,
AGE INT NOT NULL,
ADDRESS VARCHAR(25),
SALARY DECIMAL(18, 2),
PRIMARY KEY(ID)
);
使用以下创建触发器语句,在 CUSTOMERS 表上创建一个新触发器“after_delete_trigger”,从 CUSTOMERS 表删除客户详细信息并将其插入另一个表“OLD_CUSTOMERS”中 -
DELIMITER //
CREATE TRIGGER after_delete_trigger
AFTER DELETE ON CUSTOMERS
FOR EACH ROW
BEGIN
INSERT INTO OLD_CUSTOMERS VALUES
(OLD.ID, OLD.NAME, OLD.AGE, OLD.ADDRESS, OLD.SALARY);
END //
DELIMITER ;
使用如下所示的常规 DELETE 语句从 CUSTOMERS 表中删除 'old' 客户的详细信息 -
DELETE FROM CUSTOMERS WHERE ID = 3;