2

可能重复:
选择/插入版本的 Upsert:是否有高并发的设计模式?

我必须根据条件将数据从一个表插入到另一个表中。

1.If Key is found update records
2.If key is not found insert the record.

我使用的是sql server 2005。所以不能使用merge语句。请提出实现这一目标的替代方案

4

3 回答 3

5
IF EXISTS(--Query to check for the existence of your condition here)
BEGIN
  --UPDATE HERE
END ELSE
BEGIN
  --INSERT HERE
END
于 2012-12-10T10:54:19.467 回答
5

从复制SourceTableDesitinationTable

update  dst
set     col1 = src.col1
from    DestinationTable dst
join    SourceTable src
on      src.Key = dst.Key

insert  DestinationTable 
        (Key, col1)
select  Key
,       col1
from    SourceTable src
where   not exists
        (
        select  *
        from    DestinationTable dst
        where   src.Key = dst.Key
        )
于 2012-12-10T10:50:51.853 回答
0

这是我对类似问题的回答中的一个存储过程示例

   CREATE PROCEDURE dbo.update_table1 
    @Field1 int, --key1
    @Field2 int, --data fields
    @Field3 int, 
    @Field4 int

    AS

    SET NOCOUNT ON
    update table1 set Field2=@Field2,Field3=@Field3,Field4=@Field4 
            where Field1=@Field1;
    IF(@@Rowcount=0)
    BEGIN
         insert into table1(Field1,Field2,Field3,Field4) 
                    values (@Field1,@Field2,@Field3,@Field4);
    END
    GO
于 2012-12-10T11:07:08.940 回答