SQL Server:如何插入2个不同的表

时间:2016-07-12 00:37:54

标签: sql sql-server-2008

这似乎是一个非常简单的答案,但出于某种原因,我无法理解如何实现这一目标......

我有两张不同的牌桌:

  1. 运动
  2. Campaign_Customer
  3. 其中dbo.Campaign是广告系列的所有详细信息,dbo.Campaign_Customer基本上是一个包含CampaignIDCustomerIDCreationDate的摘要表,和DeletionDate(如果有的话)

    因此,当我在我的dbo.Campaign表中插入新记录时,我需要能够使用它生成的CampaignID来创建我的dbo.Campaign_Customer表中的记录

    我知道这是可能的,但我不知道这样做的正确方法。有什么帮助吗?

2 个答案:

答案 0 :(得分:3)

您需要在事务中包含2个单独的插入语句。如果您的广告系列ID是标识列,则可以在首次插入后使用scope_identity函数获取其值

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

答案 1 :(得分:1)

你可以创建一个触发器来执行此操作:

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