私は2つのテーブルを持っています:
new_table
ID | 親 ID | f1 | f2 | 顧客ID
initial_table (customerid はありません)
ID | 親 ID | f1 | f2
私がする必要があるのは、すべての項目を initial_table から new_table に移動することです。ただし、id の変更 (自動生成) は new_table!
--
だから、私の考え(今のところ)は:
1 - initial_table を除くすべてのデータを new_table に移動しid
ますparentid
。
2 - lookup_table を使用する
ID | 元の親 ID | 新しい親 ID | 顧客ID
parentid
3 - lookup_table を調べて、new_tableのparentid 列を新しい値で更新します。
--
それで...
質問 - 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 を取得できません。
--
ですから、このトリガーを書くのを手伝ってください:
IDが変更されるという問題で、initial_tableからnew_tableにすべてのデータをコピーする必要があり、それに応じてnew_tableでparentidを更新する必要があります
thnx
--
これが私の現在のトリガーです:
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