MySQL触发器在更改或删除时触发

时间:2011-12-28 14:56:35

标签: mysql triggers

我遇到了一个有趣的问题。我想创建两个触发器,trigger1将在DROP TABLE上触发,触发器在ALTER TABLE上触发。如果删除或更改任何表,我想触发trigger1和trigger2,但不幸的是,我不知道这样做的语法,我也找不到这种触发器的语法。在MySQL中,我只能编写在INSERTUPDATEDELETE之前/之后触发的触发器,但是现在我想编写适用于数据库级别的触发器并触发桌面活动。有人可以帮帮我吗?

3 个答案:

答案 0 :(得分:10)

您正在寻找的是“DDL​​触发器”。 MySQL不支持它们

有这个SourceForge request,但我不确定任何人对添加它有多认真

答案 1 :(得分:1)

无法对drop语句使用触发器。根据documentation触发器已激活

  • INSERT :只要在表中插入新行,就会激活触发器;例如,通过INSERT,LOAD DATA和REPLACE 语句。

    UPDATE :只要修改了行,就会激活触发器;例如,通过UPDATE语句。

    DELETE :只要从表中删除行,就会激活触发器;例如,通过DELETE和REPLACE语句。 但是,表上的DROP TABLE和TRUNCATE TABLE语句不会激活此触发器,因为它们不使用DELETE

它没有说任何关于alter table的内容,但我希望只有DML语句能够触发一个触发器。

答案 2 :(得分:0)

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

测试这个