删除网格视图中的行时,消息面板指示SQL Developer发出此删除命令.
DELETE FROM "MH"."T" WHERE ROWID = 'AABUG+AAEAAEZtrAAA' AND ORA_ROWSCN = '1220510600909' and ( "A" is null or "A" is not null )
似乎指定ROWID应该足以识别行,所以
为什么要指定ORA_ROWSCN?
更令人困惑的是,为什么是null/not null子句?
Justin Cave.. 6
这ROWID
只是行的物理地址.如果删除了一行并插入了另一行,则新行可能ROWID
与旧行相同.如果行中的数据已被修改,则其ROWID
可能也已更改.该ORA_ROWSCN
标准确保这些都不实际上发生了.它还允许SQL Developer在您读取数据时另一个会话已修改数据时提醒您,以便您可以确认仍要删除该行.
我不知道A is null or A is not null
谓词会添加什么.如果它是第一个谓词,我猜它是标准1 = 1
谓词,人们有时会添加到动态构建的查询中,以简化动态构建SQL语句的过程.但这不适合它作为查询中的最后一个谓词.是A
表的主键吗?
这ROWID
只是行的物理地址.如果删除了一行并插入了另一行,则新行可能ROWID
与旧行相同.如果行中的数据已被修改,则其ROWID
可能也已更改.该ORA_ROWSCN
标准确保这些都不实际上发生了.它还允许SQL Developer在您读取数据时另一个会话已修改数据时提醒您,以便您可以确认仍要删除该行.
我不知道A is null or A is not null
谓词会添加什么.如果它是第一个谓词,我猜它是标准1 = 1
谓词,人们有时会添加到动态构建的查询中,以简化动态构建SQL语句的过程.但这不适合它作为查询中的最后一个谓词.是A
表的主键吗?