使用 MERGE 进行增量插入

mhn*_*mhn 1 sql sql-server merge sql-server-2012

我有一个场景,目标表的一列需要自动递增。我没有在此列上启用身份。所以我需要选择最后一个数字并在每次插入时加 1。

http://sqlfiddle.com/#!6/61eb4/5

小提琴链接中给出了类似的场景。我不希望插入 ProductChanges 表的 productid。相反,我需要选择最后一个 id,我需要为每个新行增加和插入它

mhn*_*mhn 5

代码让这个工作

DECLARE @intctr int
SELECT @intctr = MAX(productid)+1 from products
DECLARE @strQry varchar(200)
SET @strQry = 
'CREATE SEQUENCE dbo.seq_key_prd
    START WITH ' +convert( varchar(12),@intctr) +'  INCREMENT BY 1 ;'
    print @strQry
    exec( @strQry)


alter table Products
    add default next value for seq_key_prd
    for ProductId;
GO


--Merge statement for data sync
MERGE Products USING ProductChanges ON (Products.Productid = ProductChanges.Productid)
WHEN MATCHED AND Products.VendorlD =0 THEN DELETE
WHEN NOT MATCHED by target then insert (productid,Productname,VendorlD)
values(default,productname,VendorlD)
 WHEN MATCHED THEN UPDATE SET
Products.ProductName = ProductChanges.ProductName ,
Products.VendorlD = ProductChanges.VendorlD;
Run Code Online (Sandbox Code Playgroud)