如何为数据库中的所有表添加触发器?
我要做的是创建一个代码,以便它遍历我数据库中的所有表并创建触发器。我试图创建一个循环,但循环和创建触发器代码给出了语法错误
我需要的是在循环中添加以下代码,以便我可以运行它来在所有表上创建触发器。对不起,我是复杂sql编码的新手。
delimiter //
drop procedure if exists hunt //
create procedure hunt()
begin
DECLARE done int default false;
DECLARE table_name CHAR(255);
DECLARE cur1 cursor for SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = "database" ;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
open cur1;
myloop: loop
fetch cur1 into table_name ;
if done then
leave myloop;
end if;
CREATE TRIGGER CONCAT('update_', table_name)
BEFORE UPDATE ON table_name
FOR EACH ROW
BEGIN
IF (NEW.updated_replication < OLD.updated_replication) THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'You can\'t travel backwards in time!';
END IF;
END
end loop;
close cur1;
end //
delimiter ;
call hunt();