0

在我的应用程序中,我有一个动态系统,所以我必须检查一个表是否已经存在,并根据需要特别创建它。如果不存在则创建表是没有问题的。

但是由于mysql不支持create trigger语句中的“if not exists”,所以想问一下除了drop trigger还有其他的解决方法吗?每次都删除触发器以重新创建它对我来说毫无意义,我只想创建一个丢失的触发器。这个事件应该发生一次,而 drop 和 recreate 会经常发生。触发器对于审计/记录目的是必需的。

也许我们可以用 oracle 的方式来做,您可以将 create ddl 包装在 begin/end 中,然后在异常处理程序中执行 null ?

4

2 回答 2

2

使用 CREATE TRIGGER 语句。如果触发器存在,您将得到一个异常,只需捕获它。

如果您不想捕获错误,那么您可以检查存在 -

SELECT TRIGGER_NAME
FROM information_schema.triggers
WHERE TRIGGER_SCHEMA = 'db_name' AND TRIGGER_NAME = 'trigger_name'
于 2012-06-27T08:29:33.323 回答
0

你可以在创建表的时候创建触发器,如果​​你删除一个带有触发器drop失败的表,你必须先删除触发器。

创建表时创建触发器,如果​​表存在则触发器存在

于 2012-06-27T08:27:08.037 回答