如果记录不存在,则插入并更新,否则竞争条件

|
if exists (select itemcode from item where itemcode=1120)
update item 
set itemname = \'laptop\'
where itemcode = 1120

else 
insert into item (itemcode,itemname)
values (1120,\'laptop\')
它将被多个用户使用。该查询将给出竞争条件。 如果是,那我该怎么用?     
已邀请:
您可以为此使用
transaction
。确保在单个事务中锁定所有必需的表,然后释放它们。
begin transaction

begin try

    if exists (select itemcode from item where itemcode=1120)
    BEGIN
    update item 
    set itemname = \'laptop\'
    where itemcode = 1120
    END

    else 
    BEGIN
    insert into item (itemcode,itemname)
    values (1120,\'laptop\')
    END

    commit transaction

end try

begin catch
  raiserror(\'Message here\', 16, 1)
  rollback transaction
end catch
如果您有多个交易,也可以给交易命名。     

要回复问题请先登录注册