如果不存在mysql创建触发器的解决方法?

时间:2012-06-27 07:42:33

标签: mysql

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

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

也许我们可以用oracle的方式来做,你可以在开始/结束中包装create ddl然后在异常hanlder中执行null?

2 个答案:

答案 0 :(得分:2)

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

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

SELECT TRIGGER_NAME
FROM information_schema.triggers
WHERE TRIGGER_SCHEMA = 'db_name' AND TRIGGER_NAME = 'trigger_name'

答案 1 :(得分:0)

您可以在创建表时创建触发器,如果​​删除触发器丢弃的表失败,则必须先删除触发器。

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