我从2个独立的存储过程的这2个查询之间陷入僵局:
1。
UPDATE ord
SET
[Num] = @Num,
[Ref] = @Re,
[Date] = @Date
FROM [Order] ord
INNER JOIN [Orders_Open] oo ON oo.Id = ord.ID
2。
UPDATE oo
SET oo.Name = i.Name,
oo.Email = i.Email,
oo.PostCode = i.PostCode,
FROM Item_Order i
INNER JOIN [Orders_Open] oo ON oo.ID = i.ID
防止死锁发生的最佳方法是什么?我已经研究过使用Holdlock来防止死锁发生:
例如
UPDATE oo WITH (HOLDLOCK)
SET oo.Name = i.Name,
oo.Email = i.Email,
oo.PostCode = i.PostCode,
FROM Item_Order i
INNER JOIN [Orders_Open] oo ON oo.ID = i.ID
这项工作吗?还是其他人可以就我可以尝试的其他方法提出建议?
谢谢
答案 0 :(得分:0)
您不能同时更新同一条记录,因为数据完整性必须保留在每笔交易中。
数据完整性是指数据的准确性和一致性 存储在数据库,数据仓库,数据集市或其他结构中。
您可以对两个查询使用一个事务块,以防止死锁。
答案 1 :(得分:0)
最好的方法是同时调整两者的性能,因此它们同时运行的可能性较小。