【发布时间】:2018-07-24 06:38:38
【问题描述】:
我有一个表 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 时使用异常来停止触发器,但我不确定如何执行此操作,或者这是否被认为是不好的做法。
【问题讨论】:
-
Derby 触发器可以调用用 Java 编写的函数或过程。例如,请参阅:deepakjha.wordpress.com/2007/09/17/…