在我的应用程序中,我有一个动态系统,所以我必须检查一个表是否已经存在,并根据需要特别创建它。如果创建表不存在,这没有问题。
但是由于mysql不支持create trigger语句中的“if not exists”,我想询问是否还有其他解决方法而不是删除触发器?我每次都放下触发器来重新创建它是没有意义的,我只是想创建一个丢失的触发器。此事件应该发生一次,而丢弃和重新创建将经常发生。触发器是审计/记录目的所必需的。
也许我们可以用oracle的方式来做,你可以在开始/结束中包装create ddl然后在异常hanlder中执行null?
答案 0 :(得分:2)
使用CREATE TRIGGER语句。如果存在触发器,您将获得异常,只需捕获它。
如果您不想捕捉错误,那么您可以检查存在 -
SELECT TRIGGER_NAME
FROM information_schema.triggers
WHERE TRIGGER_SCHEMA = 'db_name' AND TRIGGER_NAME = 'trigger_name'
答案 1 :(得分:0)
您可以在创建表时创建触发器,如果删除触发器丢弃的表失败,则必须先删除触发器。
创建表时创建触发器,如果表存在触发器