[SQL Server]SQL Server数据库中判断数据存在则更新,不存在则插入数据的方法有哪些?

SQL Server 作者: Rector 767阅读 0评论 0收藏 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

[SQL Server]SQL Server数据库中判断数据存在则更新,不存在则插入数据的方法有哪些?

问题描述

在很多项目中,我们有这样的需求:在向数据表中插入数据之前,需要先判断这条数据是否存在,如果存在,则更新,如果不存在,则插入新数据,实现方案有哪些呢?

方案一

begin tran
if exists (select * from table with (updlock,serializable) where key = @key)
begin
   update table set ...
   where key = @key
end
else
begin
   insert into table (key, ...)
   values (@key, ...)
end
commit tran

或者

begin tran
   update table with (serializable) set ...
   where key = @key

   if @@rowcount = 0
   begin
      insert into table (key, ...) values (@key,..)
   end
commit tran

方案二

SQL Server 2008 或者以上版本,可以使用MERGE关键字:

merge tablename with(HOLDLOCK) as target
using (values ('new value', 'different value'))
    as source (field1, field2)
    on target.idfield = 7
when matched then
    update
    set field1 = source.field1,
        field2 = source.field2,
        ...
when not matched then
    insert ( idfield, field1, field2, ... )
    values ( 7,  source.field1, source.field2, ... )

方案三

IF EXISTS (SELECT * FROM [Table] WHERE ID = rowID)
UPDATE [Table] SET propertyOne = propOne, property2 . . .
ELSE
INSERT INTO [Table] (propOne, propTwo . . .)

方案四

MERGE INTO table_name WITH (HOLDLOCK) USING table_name ON (condition)
WHEN MATCHED THEN UPDATE SET column1 = value1 [, column2 = value2 ...]
WHEN NOT MATCHED THEN INSERT (column1 [, column2 ...]) VALUES (value1 [, value2 ...])

阅读了该文章的人还浏览了...

本文永久链接码友网 » [SQL Server]SQL Server数据库中判断数据存在则更新,不存在则插入数据的方法有哪些?

发布于: 2018-01-11 20:18:13
分享扩散:

文章评论

获取验证码