Does the SQL standard specify the locking order for a multi-table query?
For example, given:
SELECT department.id FROM permissions, terminals, departments WHERE department.id = ? AND terminal.id = ? AND permissions.parent = department.id AND permissions.child = terminals.id;
- Does the SQL standard guarantee a locking order or is it determined by the (implementation-specific) execution plan?
- Is there a way to guarantee a locking order?
- If there is no way to guarantee locking order, how are we supposed to prevent deadlocks?
UPDATE: Please do not vote to close this issue without explaining your reasoning. As far as I'm concerned, this is a programming question, which makes it very much on-topic for Stackoverflow. If you believe the question needs to be further refined, please explain and I will be more than happy to answer you.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…