我遇到了一个有趣的问题。我想创建两个触发器,其中trigger1将在DROP TABLE时触发,而trigger2将在ALTER TABLE时触发。我希望如果任何表被删除或更改,则会触发trigger1和trigger2,但是,不幸的是我不知道如何编写此类触发器的语法,也找不到这样的触发器的语法。在MySQL中,我只能编写在INSERT、UPDATE或DELETE之前/之后触发的触发器,但现在我想编写适用于数据库级别且可在表事件上触发的触发器。有人可以帮我吗?
无法使用触发器来执行删除语句。根据文档,触发器在以下情况下被激活:
INSERT:每当向表中插入新行时,例如通过 INSERT、LOAD DATA 和 REPLACE 语句时,触发器会被激活。
UPDATE:每当修改行时,例如通过 UPDATE 语句时,触发器会被激活。
DELETE:每当从表中删除行时,例如通过 DELETE 和 REPLACE 语句时,触发器会被激活。但是,对表执行的 DROP TABLE 和 TRUNCATE TABLE 语句不会激活此触发器,因为它们不使用 DELETE。
虽然没有提到 ALTER TABLE,但我只期望 DML 语句能够触发触发器。
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
测试一下