我需要验证记录是否已经存在。存储过程中执行该操作的部分是:
SELECT EXISTS (SELECT 1 FROM MyTable
WHERE FirstName = @FirstName
AND LastName = @LastName
AND Address = @Address)
BEGIN
SET @IsNewRecord = 1
END
IF @IsNewRecord = 1
BEGIN
INSERT INTO MyTable
VALUES (@FirtName, @LastName, @Addres, @City, @Phone)
END
那很好,问题是当多个客户端同时调用存储过程时,它将返回@IsNewRecord = 1
。
我已经尝试过在TRANSACTION BLOCK
之间进行验证,但是它仍然会创建一条新记录。
使用SELECT
时如何处理并发?
答案 0 :(得分:0)
这样做
begin transaction
SELECT EXISTS (SELECT 1 FROM MyTable WHERE FirstName = @FirstName AND LastName = @LastName
AND Address = @Address)
BEGIN
INSERT INTO MyTable
VALUES (@FirtName, @LastName, @Addres, @City, @Phone)
END
commit