我有一个表PERSON,其中有LAST_VISIT列(还有其他列)。我正在尝试创建一个触发器,以便在更新PERSON并仅从上一个值仅当LAST_VISIT更改时,才将行插入到另一个表中。这可能吗?我尝试过的:
CREATE TRIGGER on_last_visit_changed
AFTER UPDATE ON PERSON
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW MODE DB2SQL
INSERT INTO
ALERT (
TYPE,
ENTITY_ID
)
VALUES
(
'LAST_VISIT_ALERT',
OLD.ID,
)
WHERE OLD.LAST_VISIT != NEW.LAST_VISIT;
但是我收到语法错误:
Syntax error: Encountered "WHERE"
我猜这有道理,因为trigger syntax似乎不允许这样做。有其他方法可以做到这一点吗?我正在考虑在不满足条件OLD.LAST_VISIT != NEW.LAST_VISIT
时使用异常来停止触发器,但是我不确定如何执行此操作,或者不确定是否被认为是不好的做法。
答案 0 :(得分:0)
通过选择插入:
CREATE TRIGGER on_last_visit_changed
AFTER UPDATE ON PERSON
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW MODE DB2SQL
INSERT INTO ALERT (
TYPE,
ENTITY_ID
)
SELECT
'LAST_VISIT_ALERT',
OLD.ID
FROM DUAL
WHERE OLD.LAST_VISIT != NEW.LAST_VISIT;