【发布时间】:2022-01-09 10:29:58
【问题描述】:
我目前正在尝试做一个
SELECT DISTINCT * FROM FINAL TABLE
(UPDATE mainTable SET value = 'N' WHERE value2 = 'Y')
但是,我拥有的 DB2 版本似乎不支持此功能
SQL Error [42601]: [SQL0199] Keyword UPDATE not expected. Valid tokens: INSERT.
在 DB2 中是否有任何替代方法可以返回所需的结果?在一个查询中我们可以在哪里更新和返回结果?
编辑 - Select 语句应该返回将由服务器应用程序开始处理的值。发生这种情况时,将更新一列以指示该行的处理已经开始。稍后的命令将在完成后再次更新该行。
ORIGINAL DATA
ROW ID | COLUMN TWO | PROCESSING FLAG
-------------------------------------------
1 | TASK 1 | N
2 | TASK 2 | N
3 | TASK 3 | N
4 | TASK 4 | N
乐观选择/更新查询后
Data Table returned as:
ROW ID | COLUMN TWO | PROCESSING FLAG
-------------------------------------------
1 | TASK 1 | Y
2 | TASK 2 | Y
3 | TASK 3 | Y
4 | TASK 4 | Y
这是由 .NET 应用程序调用的,因此它将被转换为表对象的列表。
【问题讨论】:
-
我认为您无法在任何数据库中执行此操作。不要误以为
select ... for update它有不同的目的。您可以选择 .. 插入。但是仅通过存储过程或匿名块更改某些内容并返回数据 -
ibm.com/docs/en/db2/… 它在某些版本的 DB2 上提供它,其中 FINAL Table 允许插入/更新。
-
样本数据和预期结果。
-
已编辑以添加示例数据和预期结果。
-
您使用的确切 db2 平台和版本是什么?