如何获得应用了触发器更新的 SQL 数据更改语句的结果?
Posted
技术标签:
【中文标题】如何获得应用了触发器更新的 SQL 数据更改语句的结果?【英文标题】:How do I get results of SQL data change statement with triggers updates applied? 【发布时间】:2021-07-28 14:46:57 【问题描述】:我有一个要求,我需要立即获得更新语句的结果。我看到我可以通过使用 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 语句中获取结果(如果可能的话)?
【问题讨论】:
【参考方案1】:使用BEFORE UPDATE
触发器和NEW TABLE
(在任何情况下)或FINAL TABLE
(如果您没有AFTER UPDATE
触发器)。
如果您不能使用BEFORE
触发器来实现您的更新逻辑,那么您就不能使用数据更改语句来实现您的目标。
【讨论】:
是的,我认为这个解决方案对将来会面临类似问题的其他人很有用。但就我而言,我需要使用AFTER UPDATE
。我可能会通过调整源代码来解决它。以上是关于如何获得应用了触发器更新的 SQL 数据更改语句的结果?的主要内容,如果未能解决你的问题,请参考以下文章