有没有办法在触发器中创建或删除表?
例如:如果我有两个表,table1和table2。
我想在table2上创建一个触发器,这样每当table1获得新的插入值或更新时,删除当前table2,然后创建table3(包含table1中更改的table2的新版本)
我可以在Mysql中做这样的事情吗?如果有方法会有什么样的语法?
答案 0 :(得分:0)
没有
https://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html说:
触发器不能使用显式或隐式开始或结束事务的语句,例如START TRANSACTION,COMMIT或ROLLBACK。 (允许ROLLBACK到SAVEPOINT,因为它不会结束事务。)。
所有DDL语句都会导致隐式COMMIT。
以下是一个例子:
mysql> create trigger t after insert on mytable for each row
create table if not exists foo (i int);
ERROR 1422 (HY000): Explicit or implicit commit is not allowed in stored function or trigger.
您的用例听起来像是一个糟糕的设计。 INSERT和UPDATE只会影响数据,不会产生改变表结构的副作用。