SQL Server:如何插入到两个不同的表中
这似乎是一个非常简单的答案,但由于某些原因,我无法思考我应该如何实现这一点 我有两张不同的桌子:SQL Server:如何插入到两个不同的表中,sql,sql-server-2008,Sql,Sql Server 2008,这似乎是一个非常简单的答案,但由于某些原因,我无法思考我应该如何实现这一点 我有两张不同的桌子: 运动 客户活动 其中,dbo.Campaign是活动的所有详细信息,dbo.Campaign\u Customer基本上是一个汇总表,其中包含活动ID,客户ID,创建日期,以及删除日期(如果有) 因此,当我要在我的dbo.Campaign表中插入一条新记录时,我需要能够使用它生成的CampaignID在我的dbo.Campaign\u Customer表中创建一条记录 我知道这是可能的,但我不知道正
dbo.Campaign
是活动的所有详细信息,dbo.Campaign\u Customer
基本上是一个汇总表,其中包含活动ID
,客户ID
,创建日期
,以及删除日期
(如果有)
因此,当我要在我的dbo.Campaign
表中插入一条新记录时,我需要能够使用它生成的CampaignID
在我的dbo.Campaign\u Customer
表中创建一条记录
我知道这是可能的,但我不知道正确的方法。有什么帮助吗?您需要在事务中有两条独立的insert语句。如果您的活动Id是标识列,则可以在首次插入后使用select中的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
您需要在事务中有两个单独的insert语句。如果您的活动Id是标识列,则可以在首次插入后使用select中的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
您可以创建触发器来执行此操作:
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
您可以创建触发器来执行此操作:
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
那么,我应该将此事务放在存储过程中吗?如果您正在为CRUD使用存储过程,但它不是必需的,这可能是最好的。那么,我应该将此事务放在存储过程中吗?如果您正在为CRUD使用存储过程,但它不是必需的,这可能是最好的。