微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql – 确定多表查询的锁定顺序?

sql标准是否指定多表查询的锁定顺序?

例如,给出:

SELECT department.id FROM权限,终端,部门WHERE department.id =? AND terminal.id =? AND permissions.parent = department.id AND permissions.child = terminals.id;

> sql标准是否保证锁定顺序,还是由(执行专用)执行计划确定?
有没有办法保证锁定订单?
>如果没有办法保证锁定顺序,我们应该如何防止死锁?

更新:请勿在不解释您的推理的情况下投票关闭此问题.就我而言,这是一个编程问题,这使得它非常适用于Stackoverflow.如果您认为该问题需要进一步完善,请说明,我将很乐意回答您.

解决方法

根据 https://stackoverflow.com/a/112256/14731锁定顺序由具体的执行顺序决定.答案进一步说,没有确定性的方式来防止僵局.而在命令式编程中,我们可以通过以相同的顺序获取锁来防止死锁,似乎在声明性系统中,我们必须通过在检测到死锁时重试该操作来解决这些问题.

此外,我认为,由于数据库执行计划在其一生中有所改变,因此在技术上不可能防止死锁.

原文地址:https://www.jb51.cc/mssql/75730.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐