我需要同步两个表。
表A
Id Name
表B
Id Name RefID --It's a Foreign key, defined as primary key in Table "TableReference"
TableReference
RefID -- Identity Column, auto increment
我需要合并TableA
和TableB
,以便TableB
中的每个插页都应将值插入TableReference
,并且插入的值应为已复制到RefId
的{{1}}列。
我在做什么?
我正在使用SSIS,因此我需要一个基于SSIS的解决方案或基于SQL的解决方案。我知道如何使用Merge SQL命令合并表,但我无法在TableB
中插入值并将其复制回TableRef
。无法弄清楚我是如何做到这一点的。 SQL用户定义的函数不允许TableB
,因此我无法使用它。
INSERT
问题是T-SQL函数不允许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})
并且这里不能调用存储过程,因为INSERT
不允许Merge
以外的任何TSQL事件INSERT
。
答案 0 :(得分:0)
您是否可以在TableB上添加TRIGGER
。如果是这样,一个选项是使用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
祝你好运。