一个存储过程中插入一个表和检索ID和插入多个表

问题描述:

我有3个表和列。例如:绿色(用户ID,名称,地址),红色(用户ID,临时地址),蓝色(用户ID,工作区)。一个存储过程中插入一个表和检索ID和插入多个表

我想将数据插入到绿色,而用户ID是自动递增的int和唯一ID。插入后这些细节要检索用户ID和插入红色和蓝色表在一个存储过程

注意:此示例表是显示一个示例场景,而不是对于真实情况......

DECLARE @userID INT; 
INSERT dbo.Green(Name, Address) SELECT @name, @address; 
SELECT @userID = SCOPE_IDENTITY(); 
INSERT dbo.Red(UserID, TemporaryAddress) SELECT @userID, @something; 
INSERT dbo.Blue(UserID, WorkPlace) SELECT @userID, @something_else; 

使用SCOPE_IDENTITY()在用户的变量中插入值,然后在红/蓝表中使用该变量值。

SQL有一个非常好的输出功能。

在这种情况下,具有自动递增int或默认值指定标识列(如NEWID()),执行插入,然后使用输出输入您的其他输入查询。

输出表有所有的值刚刚插入,并且可以查询,就像任何其他表,以区别在于它有立即可用的新的价值后提交。

INSERT INTO 
tblInsertedID(ID) 
SELECT * FROM 
    (INSERT 
    INTO tblDir(Dir) 
    OUTPUT inserted.ID 
    VALUES ('C:\NewDir\') 
    ) InnerTable 
+0

如何使用'OUTPUT'来随后插入两个不同的表?你不能,你需要的东西输出到表变量或,如果原来的刀片是一个单行,只使用SCOPE_IDENTITY()和一个单一的变量。 – 2012-07-10 15:02:21