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