一个存储过程,用于插入一个表并检索ID并插入多个表

时间:2012-07-10 13:44:00

标签: sql-server tsql stored-procedures

我有3个表和列。例如:绿色(用户ID,名称,地址),红色(用户ID,临时地址),蓝色(用户ID,工作地点)。

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

注意:此示例表用于显示示例场景,而不是用于实际使用...

3 个答案:

答案 0 :(得分:1)

SQL有一个非常好的OUTPUT功能。

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

输出表具有刚刚插入的所有值,可以像任何其他表一样进行查询,区别在于它在提交后立即可以使用新值。

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

答案 1 :(得分:0)

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;

答案 2 :(得分:0)

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