gpt4 book ai didi

sql - 将 SQL INSERT 与引用表合并

转载 作者:行者123 更新时间:2023-12-02 11:11:48 29 4
gpt4 key购买 nike

我需要同步两个表。

表A

Id    Name  

表B

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

表格引用

RefID -- Identity Column, auto increment

我需要合并 TableATableB,以便在 TableB 中每次插入时,都应将一个值插入 >TableReference 并且插入的值应复制到 TableBRefId 列中。

我在做什么?

我正在使用 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 并且无法在此处调用存储过程,因为 Merge 不允许除INSERTWHEN NOT MATCHED BY TARGET THEN 之后。

最佳答案

您可以在 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

祝你好运。

关于sql - 将 SQL INSERT 与引用表合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14345698/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com