DML的行锁定

发布于 2025-01-27 16:53:22 字数 499 浏览 3 评论 0原文

我知道,如果是DML语句的情况,则在修改的行上获得了行锁,但是我在下面的语句中感到困惑,此Oracle Doc

包含DML语句的交易不需要行锁 在子查询或隐式查询选择的任何行上。

在以下示例更新语句中,在 括号是一个子查询,>而a> 5条款是一个 隐式查询:

更新t设置x =(从t2中选择y,其中t2.z = tz)其中a> 5;

我的理解是,将对所有行获取锁定,其中a> 5,但本文似乎是相反的。

甲骨文专家可以解释一下。

I know that in case of DML statement row lock is acquired on the rows which are modified, but I am confused below of below statement from this Oracle doc:

A transaction that contains a DML statement does not require row locks
on any rows selected by a subquery or an implicit query.

In the following sample UPDATE statement, the SELECT statement in
parentheses is a subquery, > whereas the WHERE a > 5 clause is an
implicit query:

UPDATE t SET x = ( SELECT y FROM t2 WHERE t2.z = t.z ) WHERE a > 5;

My understanding is that lock will be acquired for all rows WHERE a > 5 but this article seems to be saying contrary.

Could an Oracle expert please explain this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文