如何在AS400上的DB2中获取受SQL UPDATE语句影响的确切行?
查看哪些行刚刚更新,在测试期间甚至更多,这非常有用。
我看到this question:是相同的,但是特定于MySQL。是否有标准的SQL方式或DB2特定的方式来执行此操作?
我也看到this technique,但我无法使用它,因为我的更新查询太复杂了。
其他功能可能是:获取这些行的上一版本,以便您可以将其与实际版本(更新后)进行比较并查看修改。
编辑:我的 DB2版本是适用于IBM i V5R3和V6R1的版本
答案 0 :(得分:5)
您没有说明正在运行的i5 / OS版本,但如果您运行的是V6R1或更高版本,则可以使用“数据更改表引用”来查看update语句修改的行。例如:
select * from FINAL TABLE ( update yourtable set c1 = x where ... )
FINAL TABLE将在触发任何/所有触发器后为您提供行。请注意,还有另一个数据更改表引用NEW TABLE - 它将在受到任何触发器影响之前显示行。
您可以在i5/OS documentation。
中阅读有关数据更改表引用的信息答案 1 :(得分:4)
GET DIAGNOSTICS updated_rows = ROW_COUNT;
请在此处查看:GET DIAGNOSTICS statement
您的“其他功能”听起来像是想要一个触发器。
交互式地,使用STRSQL
,语句完成后,会在屏幕上显示这样的响应消息。