在 MySQL 中,创建触发器的语句如下:
CREATE TRIGGER trigger_name BEFORE/AFTER INSERT/UPDATE/DELETE ON table_name FOR EACH ROW BEGIN – 触发器操作语句 END;
其中,”trigger_name”是要创建的触发器名称;”table_name”是要应用触发器的表名;”BEFORE/AFTER”关键字指定触发时机为插入/更新/删除之前或之后;”INSERT/UPDATE/DELETE”关键字指定触发类型为插入、更新或删除;最后,在BEGIN和END之间编写具体的触发操作语句。
如果需要自动创建多个相同结构的触发器,可以使用循环和字符串拼接来实现。例如,以下示例代码会自动创建名为trig1到trig5共5个触发器:
DELIMITER $\( DROP PROCEDURE IF EXISTS create_triggers\)$ CREATE PROCEDURE create_triggers() BEGIN DECLARE i INT DEFAULT 1; DECLARE trig_name VARCHAR(50); WHILE i <= 5 DO
SET trig_name = CONCAT('trig', i);
SET @sql = CONCAT(
'CREATE TRIGGER ', trig_name, '
BEFORE INSERT ON mytable
FOR EACH ROW
BEGIN
-- 触发器操作语句
END;');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET i = i + 1;
END WHILE; END$$
调用该存储过程即可自动生成5个名为trig1到trig5的触发器。注意,以上示例代码中使用了MySQL内置函数CONCAT和PREPARE/EXECUTE语句来动态生成SQL语句。