BEFORE和AFTER触发器以及基于行和基于语句的触发器是数据库中常用的触发器类型。它们可以在特定的数据库操作(例如插入、更新、删除)前或后自动执行相关的 SQL 代码。
下面是一个示例,展示如何创建一个BEFORE INSERT和AFTER INSERT触发器,以便在新增一行数据(即INSERT)到指定的表时,执行某些特定的SQL操作。
-- 创建一个BEFORE INSERT触发器 CREATE TRIGGER trig1 BEFORE INSERT ON mytable FOR EACH ROW BEGIN -- 在插入新行之前执行的SQL代码 END;
-- 创建一个AFTER INSERT触发器 CREATE TRIGGER trig2 AFTER INSERT ON mytable FOR EACH ROW BEGIN -- 在插入新行之后执行的SQL代码 END;
在上面的例子中,我们创建了两个不同的触发器:BEFORE INSERT和AFTER INSERT。这意味着,我们可以在执行INSERT命令之后立即执行SQL代码。此外,我们使用“FOR EACH ROW”来表示此触发器是在每次插入一行数据时执行的。
此外,我们还可以创建基于语句(而非基于行)的触发器。基于语句的触发器只会在使用特定语句执行数据库操作时执行(例如,只在一次UPDATE操作中执行一次),而不是在每次插入或更新每一行数据时执行。
-- 创建一个基于语句的触发器 CREATE TRIGGER trig3 AFTER UPDATE ON mytable FOR EACH STATEMENT BEGIN -- 更新操作执行后执行的SQL代码 END;
在上面的例子中,我们创建了一个基于语句的触发器来在执行UPDATE操作后执行SQL代码。注意,我们使用“FOR EACH STATEMENT”来