2016-05-13 3 views
0

を挿入上のトリガ、私は親レコードが挿入された後、「多くの」テーブルのレコードを作成したいと考え、多くのテーブルに1いくつかがあります自動生成されたID値と親レコードからの別の値のみを挿入します。SQL Serverの:の後に複数の表に、私は設定していますSQL Serverデータベースで

  • 表1(親):Auto_ID、名前、createby、createdatetime
  • 表2(子):Auto_ID、Parent_Auto_ID、のCol1、Col2に、createby、createdatetime
  • 表例えば

    3(子供):Parent_Auto_ID、のCol1、createby、createdatetime

私は既に持っている:

CREATE TRIGGER [dbo].[ipamuserInsert] 
ON [dbbo].[ipamuser] 
FOR INSERT 
AS 
    SET NOCOUNT ON 

    INSERT INTO [dbo].[ipamuserdefault] 
     (ipamuserID, homepage, createby, createdatetime) 
    VALUES 
     SELECT 
      ipamuserID, 
      NULL, 
      createby, 
      GETDATE() 
     FROM 
      inserted 

    INSERT INTO [dbo].[ipamextlink] 
     (ipamuserID, link, createby, GETDATE()) 
    VALUES 
     SELECT 
      ipamuserID, null, createby, GETDATE() 
     FROM 
      inserted 
    GO 

これは正しい構文ですか、別の一時変数を宣言してipamuserIDとcreatebyの値を格納して代わりに使用する必要がありますか?

答えて

0

テーブル定義なしでこれをテストすることはできませんが、私はあなたにスポットがあると思います。

テーブルの数に応じて、この動的にすることを検討します。テーブルの数は、しかし、それは努力の価値を作るために高い必要があります。

編集に基づいてコメントに: システムビューを使用して関連するテーブルを検索し、メタデータに基づいてSqlを動的に生成することで、この動的化を行うことができます。ここにあなたを始めるためのいくつかの記事があります。

https://msdn.microsoft.com/en-us/library/ms177862.aspx

https://msdn.microsoft.com/en-us/library/ms186778.aspx基本構造は、各関連テーブルのカーソルループと関連テーブル内の各列の内側カーソルループを作成することであろう。質問で定義したのと同じ形式でSQL文を動的に構築します。

+0

[OK]を、平均で3つのテーブルは、すべての1に私はこれを行うために必要としています多くの親テーブルにあります。どのように私はこの動的にするだろうか分からない。 – mattgcon

+0

3つの子テーブルを持つ3つの親テーブルがある場合は、提案したものに固執します。多分30+親テーブルを持っている場合は、あなたがに「デフォルトの列」を挿入する必要がテーブルを見つけるために、外部キー制約を見つけるために、システム・ビューを照会することができます。 –

関連する問題