DB2,ORACLE和SQL Server。更新SUBSELECT FOR UPDATE,避免死锁

时间:2015-04-15 15:18:05

标签: sql-server database oracle db2

我有一个工具,您可以将它与DB2,Oracle和MySQL一起使用。现在我有很多死锁(SQL Server),我想避免这种情况。我有以下SQL更新查询

UPDATE [TABA] 
SET FIELDA = 0  
WHERE FIELDB = ? AND FIELDC = ?;

此SQL更新查询导致死锁。我想将它改为SUBSELECT_FOR_UPDATE,例如

UPDATE [TABA] 
SET FIELDA = 0  
WHERE FIELDB IN (SELECT FIELDB 
                 FROM [TABA] WHERE FIELDE = 600 AND FIELDG = 5885328 FOR UPDATE);

我不知道如何在SUBSELECT(DB2,ORacle和SQL Server)中使用FOR UPDATE。

1 个答案:

答案 0 :(得分:0)

对于SQL Server我知道

UPDATE [TABA] 
SET FIELDA = 0 
WHERE FIELDB IN (SELECT FIELDB 
                 FROM [TABA] with (updlock) where FIELDE = 600 AND FIELDG = 5885328);

缺少DB2和Oracle