DB2 访问特定行,在非唯一 table 中,用于更新/删除操作

DB2 access specific row, in an non Unique table, for update / delete operations

我可以在 NON QUNIQUE 主键上下文中通过 SQL 在 DB2 table 中执行特定于行的更新/删除操作吗?

Table 是 AS/400 的本地系统上的物理文件。 与许多其他文件一样,它是在没有唯一定义的情况下创建的,这导致 DB2 得出结论,即 Table 或 PF 没有 qunique Key。

这就是我的问题。我不能覆盖 table 的结构来插入一个唯一的 ID 行,因为,我将不得不重新编译我在 AS/400 上的所有相关程序,这是一个严重的问题,很多事情不会工作了,“也许”。当然,我可以对一个 table 进行重构,但是我们的系统有成千上万的原生文件,有些使用 Unique Key 做得很好,有些没有 Unique 定义...

好吧,我大部分时间都在使用 db2 和 sql 处理那些旧文件。所有具有 UNIQUE Key 的文件对我来说执行那些重要的更新/删除操作都没有问题。

有没有什么方法可以让每个 select 都有一个非常独特的行 ID、各自的行号的附加列。此外,更重要的是,我该如何更新这个 RowNumber。

我做了一些研究,同时我假设,当没有唯一密钥时,没有机会进行精确的更改或删除。我希望的是一些额外的 ID-ROW,它总是与 table 一起发送,我可以在执行更新/删除操作时参考它。也许我在这里的想法有一个谬误,因为非唯一键 Tables 旨在以其他方式进行编辑。

试试RRN函数。

SELECT RRN(EMPLOYEE), LASTNAME
FROM EMPLOYEE
WHERE ...;

UPDATE EMPLOYEE
SET ...
WHERE RRN(EMPLOYEE) = ...;