获取受更新影响的行

时间:2011-01-18 15:18:04

标签: database db2 ibm-midrange

如何在AS400上的DB2中获取受SQL UPDATE语句影响的确切行

查看哪些行刚刚更新,在测试期间甚至更多,这非常有用。

我看到this question:是相同的,但是特定于MySQL。是否有标准的SQL方式或DB2特定的方式来执行此操作?

我也看到this technique,但我无法使用它,因为我的更新查询太复杂了。

其他功能可能是:获取这些行的上一版本,以便您可以将其与实际版本(更新后)进行比较并查看修改。

编辑:我的 DB2版本是适用于IBM i V5R3和V6R1的版本

2 个答案:

答案 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,语句完成后,会在屏幕上显示这样的响应消息。