1

ターゲット テーブルの 1 つの列を自動インクリメントする必要があるシナリオがあります。この列で ID が有効になっていません。したがって、挿入が完了するたびに、最後の番号を選択してそれに 1 を追加する必要があります。

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

同様のシナリオがフィドルのリンクにあります。ProductChanges テーブルの productid を挿入したくありません。代わりに、最後のIDを選択する必要があり、新しい行ごとに増分して挿入する必要があります

4

2 に答える 2

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;
于 2013-09-26T10:19:06.103 に答える