我们在两台机器上运行Azure SQL数据库,进行地理复制(只读副本)。有时我们会遇到一个常见的SQL错误:
Violation of PRIMARY KEY constraint 'PK__transact__3213E82229255808'. Cannot insert duplicate key in object 'dbo.owners'. The duplicate key value is (428178d0-1234-4846-871c-769a3c40c884).
通常我没有解决问题。但是,插入/更新该表的唯一代码如下:
BEGIN TRANSACTION
IF NOT EXISTS (SELECT * FROM owners WHERE id = @ownerId)
BEGIN
INSERT INTO owners
(
id
)
VALUES
(
@ownerId
)
END
ELSE
BEGIN
UPDATE owners
SET
...
updatedAt = GETDATE()
WHERE id = @ownerId
END
...
COMMIT TRANSACTION
(我删除了一些不相关的代码)
代码似乎都很完美,我唯一的选择就是复制有一些奇怪的东西。我在这里错过了什么吗?