我有两张桌子:
新表
编号 | 父母身份 | f1 | f2 | 客户ID
initial_table(没有 customerid)
编号 | 父母身份 | f1 | f2
我需要做的是将所有项目从 initial_table 移动到 new_table。但是,新表中的 id 更改(自动生成)!
--
所以,我的想法(现在)是:
1 - 将除initial_table之外的所有数据移动到id
new_tableparentid
2 - 使用lookup_table
编号 | 原始父母ID | 新父母ID | 客户ID
3 - 浏览 lookup_table 并用 new 更新 new_table parentidparentid
列
--
所以...
问题 - 1 - 这是正确的方法吗?
问题 - 2a - 如果是,该怎么做?
问题 - 2b - 如果没有,那怎么办?
2 中的问题是我是通过触发器执行此操作的,customerid
并且SELECT @customerid = id FROM inserted
这很好。那我在做
INSERT INTO new_table (f1, f2, customerid)
SELECT f1, f2 @customerid FROM initial_table
但是当我这样做时,我没有从 new_table 获得新的 ID。
--
所以,请帮我写这个触发器:
我需要将所有数据从initial_table复制到new_table,问题是id会改变,我需要在new_table中相应地更新parentid
谢谢
--
这是我当前的触发器:
ALTER TRIGGER Copy
ON dbo.Customers
FOR INSERT
AS
BEGIN TRANSACTION
/* variables */
DECLARE
@customerid bigint
SELECT @customerid = id FROM inserted
/* insert all for this customer */
INSERT INTO new_table (f1, f2, customerid)
SELECT f1, f2 @customerid FROM initial_table
/* TODO: add entries to lookup table */
/* TODO: fix the pages' parentid's */
/* execute */
COMMIT TRANSACTION
GO