我有 3 个表格和列。例如:绿色(用户 ID、姓名、地址)、红色(用户 ID、临时地址)、蓝色(用户 ID、WorkPlace)。
我想在用户 ID 自动递增 int 和唯一 ID 时将数据插入绿色。插入这些详细信息后,要检索用户 ID 并在一个存储过程中插入红色和蓝色表
注意:此示例表是为了展示一个示例场景,而不是在现实世界中使用...
我有 3 个表格和列。例如:绿色(用户 ID、姓名、地址)、红色(用户 ID、临时地址)、蓝色(用户 ID、WorkPlace)。
我想在用户 ID 自动递增 int 和唯一 ID 时将数据插入绿色。插入这些详细信息后,要检索用户 ID 并在一个存储过程中插入红色和蓝色表
注意:此示例表是为了展示一个示例场景,而不是在现实世界中使用...
SQL 有一个非常好的 OUTPUT 特性。
在这种情况下,使用自动递增的 int 或默认值(例如 newid())指定您的标识列,执行插入操作,然后将输出用作其他输入查询的输入。
输出表包含刚刚插入的所有值,并且可以像任何其他表一样查询,不同之处在于它在提交后立即提供新值。
INSERT INTO
tblInsertedID(ID)
SELECT * FROM
(INSERT
INTO tblDir(Dir)
OUTPUT inserted.ID
VALUES ('C:\NewDir\')
) InnerTable
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() 将值插入用户的变量中,然后在红/蓝表中使用此变量值。