是否可以一起为我的数据库中的所有表创建触发器

时间:2014-06-19 14:39:19

标签: mysql sql triggers

如何为数据库中的所有表添加触发器?

我要做的是创建一个代码,以便它遍历我数据库中的所有表并创建触发器。我试图创建一个循环,但循环和创建触发器代码给出了语法错误

我需要的是在循环中添加以下代码,以便我可以运行它来在所有表上创建触发器。对不起,我是复杂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();

0 个答案:

没有答案