ai didi

oracle - 为什么 Oracle SQL Developer 使用如此奇怪的删除标准?

转载 作者:行者123 更新时间:2023-12-02 06:39:09 24 4
gpt4 key购买 nike

在 GridView 中删除行时,消息面板会指示 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?
  • 更令人困惑的是,为什么使用 is null/not null 子句?

最佳答案

ROWID 只是行的物理地址。如果删除一行并插入另一行,则新行可能与旧行具有相同的 ROWID。如果行中的数据已被修改,则其 ROWID 也可能已更改。 ORA_ROWSCN 标准确保这两种情况实际上都没有发生。它还允许 SQL Developer 在您读取数据后是否有另一个 session 修改了该数据,从而向您发出警报,以便您确认是否仍要删除该行。

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

关于oracle - 为什么 Oracle SQL Developer 使用如此奇怪的删除标准?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29090929/

24 4 0
文章推荐: gcc - .data.rel.ro 有何用途?
文章推荐: 没有 ID 字段或具有部分 NULL 复合字段的 Grails 域类
文章推荐: memory - 使用 VADump 跟踪内存使用情况 - OpenProcess 失败 c0000034
文章推荐: django - 将uuid传递给reverse()来构造url
行者123
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
全站热门文章
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com