【发布时间】:2016-09-29 11:45:55
【问题描述】:
我的同事和我想知道,在更新过程中,如果在where 子句中使用同一列,是否正在更新列,这可能会导致死锁。
例如:
UPDATE EMPLOYEES
SET DEPT_ID = NULL
WHERE DEPT_ID = 13;
那么如果表EMPLOYEES 包含大约一百万条记录,是否存在死锁的可能性?
【问题讨论】:
-
绝对不是。这是一个完全合法的更新查询。
-
如果只有 一个 查询正在运行,我认为不会出现死锁。每当您更新多行时,其他查询可能会尝试更新或删除这些行,从而导致潜在的死锁情况,但使用
where中的更新列不是原因。 -
死锁总是涉及至少 两个事务。单个语句永远不会“自己死锁”。
-
那么你有答案了吗?
标签: sql postgresql