如果HSQLDB中不存在触发器,如何有条件地创建触发器?

时间:2018-04-20 07:28:29

标签: sql hsqldb

HSQLDB支持有条件地创建这样的表:

CREATE TRIGGER myTrigger AFTER INSERT ...

但遗憾的是,这种语法不支持触发器。如果我们尝试创建这样的触发器

SELECT 1 FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME = 'MYTRIGGER')

如果我们之前创建了“对象名称已存在”,则会出现错误。

目前的解决方法是什么?
  1. 创建尚不存在的触发器和
  2. 当它存在时不会出现错误?
  3. 我可以使用此选项检查触发器是否存在:

    std::unique_ptr

    但不确定如何使用它来有条件地执行create trigger语句。

1 个答案:

答案 0 :(得分:0)

你可以试试这个:

SELECT COUNT(*)
  INTO v_exists
  FROM INFORMATION_SCHEMA.TRIGGERS
 WHERE TRIGGER_NAME = 'MYTRIGGER';

IF (v_exists = 0) THEN -- Does not exists
  CREATE TRIGGER ....
END IF;