2016-07-12 13 views
0

これは本当に単純な答えのように思えるが、何らかの理由で、私はこれを実現する方法の周りに私の頭をラップすることはできませんに挿入する方法をSQL Serverの:... 2つの異なるテーブル

私は2つ持っています異なるテーブル:dbo.Campaignキャンペーンの詳細の全てで、dbo.Campaign_Customerは基本的に

  1. キャンペーン
  2. Campaign_Customer

だから、(1がある場合)CampaignIDCustomerIDCreationDate、およびDeletionDateが含まれているサマリー表

、私は私のdbo.Campaignテーブルに新しいレコードを挿入するために行くとき、私はそれが生成CampaignIDを使用できるようにする必要があります私のdbo.Campaign_Customerテーブルにレコードを作成します。

これは可能ですが、適切な方法はわかりません。どんな助け?

答えて

3

トランザクション内に2つの別個の挿入文が必要です。キャンペーンIdはID列がある場合は、あなたがこれを行うにトリガー作成することができます最初の

BEGIN TRANSACTION 
INSERT INTO dbo.Campain (x, y, z) VALUES (x, y, z) 
DECLARE @id int 
SELECT @id = scope_identity() 

INSERT INTO dbo.Campaign_Customer (CampaignId, x, y) VALUES (@id, x, y) 
COMMIT 
+0

をだから私は内部のこの取引を入れてくださいストアドプロシージャ? – James

+0

CRUDにストアドプロシージャを使用しているのであれば、おそらく最適ですが、必須ではありません。 – Gennadiy

1

を挿入した後の選択でSCOPE_IDENTITY機能を使用してその値を取得できます。

CREATE TRIGGER [Campaign_Trigger] on dbo.Campaign 
AFTER INSERT AS 
INSERT INTO dbo.Campaign_Customer (CampaignId, x, y) 
VALUES (t.CampaignID, t.x, t.y) 
FROM Inserted t 
関連する問題