如何获得应用了触发器更新的 SQL 数据更改语句的结果?
How do I get results of SQL data change statement with triggers updates applied?
我有一个要求,需要立即获得更新语句的结果。我看到我可以通过使用 SQL data-change-statement modifiers 来做到这一点。但是,在应用所有关联的触发器后,我无法获得最终结果。例如,假设我有以下查询:
SELECT empno, salary FROM FINAL TABLE
(UPDATE employee SET salary = salary * 1.10 WHERE job = 'CLERK')
假设我有一个触发器执行以下操作:
CREATE TRIGGER EXTRA_PAY_RISE AFTER UPDATE ON employee
REFERENCING OLD AS oldrow
NEW AS newrow
FOR EACH ROW MODE DB2SQL
WHEN (newrow.dept = 'sales')
UPDATE employee SET salary = salary * 1.01 WHERE name = newrow.name;
如何从包含所有关联触发器应用的更新的第一个 select 语句中获取结果(如果可能的话)?
使用 BEFORE UPDATE
触发器和 NEW TABLE
(任何情况下)或 FINAL TABLE
(如果您没有 AFTER UPDATE
触发器)。
如果您不能使用 BEFORE
触发器来实现您的更新逻辑,那么您就不能使用数据更改语句来实现您的目标。
我有一个要求,需要立即获得更新语句的结果。我看到我可以通过使用 SQL data-change-statement modifiers 来做到这一点。但是,在应用所有关联的触发器后,我无法获得最终结果。例如,假设我有以下查询:
SELECT empno, salary FROM FINAL TABLE
(UPDATE employee SET salary = salary * 1.10 WHERE job = 'CLERK')
假设我有一个触发器执行以下操作:
CREATE TRIGGER EXTRA_PAY_RISE AFTER UPDATE ON employee
REFERENCING OLD AS oldrow
NEW AS newrow
FOR EACH ROW MODE DB2SQL
WHEN (newrow.dept = 'sales')
UPDATE employee SET salary = salary * 1.01 WHERE name = newrow.name;
如何从包含所有关联触发器应用的更新的第一个 select 语句中获取结果(如果可能的话)?
使用 BEFORE UPDATE
触发器和 NEW TABLE
(任何情况下)或 FINAL TABLE
(如果您没有 AFTER UPDATE
触发器)。
如果您不能使用 BEFORE
触发器来实现您的更新逻辑,那么您就不能使用数据更改语句来实现您的目标。