为什么 Oracle SQL 开发人员使用如此奇怪的删除标准?

Why does Oracle SQL Developer use such strange delete criteria?

在网格视图中删除行时,消息面板指示SQL开发人员发出此删除命令。

DELETE FROM "MH"."T" WHERE ROWID = 'AABUG+AAEAAEZtrAAA'
                       AND ORA_ROWSCN = '1220510600909'
                       and ( "A" is null or "A" is not null )

似乎指定 ROWID 应该足以识别行,所以

ROWID只是行的物理地址。如果删除一行并插入另一行,则新行可能与旧行具有相同的 ROWID。如果行中的数据已被修改,则其 ROWID 也可能已更改。 ORA_ROWSCN 标准确保这些都没有实际发生。它还允许 SQL 如果另一个会话在您读取数据后修改了数据,开发人员会提醒您,以便您可以确认您仍然想要删除该行。

我不知道 A is null or A is not null 谓词会添加什么。如果它是第一个谓词,我猜它是标准的 1 = 1 谓词,人们有时会添加到动态构建的查询中以简化动态构建 SQL 语句的过程。但这不适合它是查询中的最后一个谓词。 A 是 table 的主键吗?