3

我需要同步两个表。

表A

Id    Name  

表B

Id  Name RefID --It's a Foreign key, defined as primary key in Table "TableReference"

表参考

RefID -- Identity Column, auto increment

我需要合并TableA,并且TableB在每次插入时TableB,都应该插入一个值,TableReference并且应该将插入的值复制到RefId的列中TableB

我在做什么?

我正在使用 SSIS,因此我需要一个基于 SSIS 的解决方案或基于 SQL 的解决方案。我知道如何使用 Merge SQL 命令合并表,但我无法将值插入TableRef并将其复制回TableB. 无法弄清楚我怎么能做到这一点。SQL 用户定义的函数不允许INSERT,所以我不能使用它。

Merge TabaleB T
Using Table A S
On S.Id=T.Id
WHEN MATCHED THEN
UPDATE
T.ID=S.ID,
T.NAME=S.NAME

WHEN NOT MATCHED BY TARGET THEN

INSERT(S.ID,S.NAME, {Somehow here i need a function call that inserts in TableRef and   Returns SCOPE_IDENTITY})

问题是 T-SQL 函数不允许INSERT,并且存储过程不能在这里调用,因为除了afterMerge之外不允许任何 TSQL 事物。INSERTWHEN NOT MATCHED BY TARGET THEN

4

1 回答 1

0

你能TRIGGER在你的TableB上添加一个吗?如果是这样,一种选择是使用该INSERTED行并从那里开始。

也许是这样的(未经测试):

CREATE TRIGGER dbo.tr_TableB
ON dbo.TableB
FOR INSERT
AS
BEGIN
    SET NOCOUNT ON;

    INSERT TableReference  DEFAULT VALUES;  

    DECLARE @RefId INT;
    SELECT @RefId  = SCOPE_IDENTITY();

    UPDATE t1
        SET t1.RefId = @RefId 
    FROM dbo.TableB AS t1 
        INNER JOIN INSERTED AS i
            ON i.Id= t1.Id

END
GO

祝你好运。

于 2013-01-15T19:55:05.747 回答