MySQL触发器在更改或删除时触发
我遇到了一个有趣的问题。我想创建两个触发器,trigger1将在DROP TABLE
上触发,并在ALTER TABLE
上触发trigger2。我想让trigger1和trigger2在任何表被删除或更改时触发,但不幸的是,我不知道这样做的语法,也找不到这种触发器的语法。在MySQL中,我只能编写在INSERT
,UPDATE
或DELETE
之前/之后触发的触发器,但现在我想编写触发器,这些触发器适用于数据库级别并将触发表事件。有人能帮助我吗?MySQL触发器在更改或删除时触发
你在找什么叫做“DDL触发器”。 MySQL不支持他们
有这个SourceForge request,但我不知道任何人有多么严重有关添加它
+1优秀的答案!但是,我希望你不对,他们有这个解决方案。我会等待其他答案,并将继续研究,如果我找到解决方案,我会自己回答我的问题。如果不是,我可能会接受你的。谢谢。 – 2011-12-28 15:38:13
您的链接今天没有任何内容,但是我发现[此Worklog条目](https://dev.mysql.com/worklog/task/?id=2418);希望它有帮助:-) – watery 2015-09-29 09:37:25
这是不可能使用一个触发下降statements.According到documentation触发器是在激活
-
INSERT:每当一个新行被插入到表中的触发器被激活;例如,通过INSERT,LOAD DATA和REPLACE 声明。
UPDATE:每当行被修改时触发器被激活;例如,通过UPDATE语句。
DELETE:无论何时从表中删除行,都会激活触发器;例如,通过DELETE和REPLACE语句。 但是,表中的DROP TABLE和TRUNCATE TABLE语句不激活此触发器,因为它们不使用DELETE。
它没有对alter table做任何说明,但我希望只有DML语句能够触发一个触发器。
+1我读过文档,并没有找到我正在寻找的内容,但是您的答案可能对没有阅读文档的其他SO用户有用。 – 2011-12-28 15:20:41
使用InnoDB时,TRUNCATE TABLE语句将始终在5.0.3之前的MySQL上使用DELETE,并且在有约束时使用DELETE。 – 2014-10-18 17:57:41
PROCEDURE `pr_new_type`(IN column_name varchar(10))
BEGIN
SET @queryText = CONCAT('ALTER TABLE `user_rights` ADD ', column_name, ' BINARY(9) NULL');
PREPARE query FROM @queryText;
EXECUTE query;
DEALLOCATE PREPARE query;
END
测试这个
这是一个程序,而不是触发器。另外,我的问题涉及两个触发器,它们将分别在alter和drop命令上运行。 – 2013-04-17 20:17:00
@Mythje:为SQL服务器。他问了一下MySql – 2011-12-28 15:02:05