方案1: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;BEGIN TRANSACTION;IF EXISTS (SELECT 1 FROM dbo.table WHERE PK = @PK)BEGIN UPDATE ...ENDELSEBEGIN INSERT ...ENDCOMMIT TRANSACTION; 方案2:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;BEGIN TRANSACTION;UPDATE dbo.table SET ... WHERE PK = @PK;IF @@ROWCOUNT = 0BEGIN INSERT dbo.table(PK, ...) SELECT @PK, ...;ENDCOMMIT TRANSACTION;