考虑这两个SQL Server表
Person
(PersonId uniqueidentifier,PersonName varchar(20))Hobby
(HobbyId int identity(1,1),PersonId uniqueidentifier,HobbyName)我的用户界面将人名和爱好列表作为输入。当用户提交表单时,我想在两个表中插入适当的记录。例如,
insert into Person
values(NEWID(), 'John')
我想知道如何获取此GUID的值,以便我可以插入Hobby
表?
insert into Hobby(PersonId, HobbyName)
values(WHAT???, 'Ping-pong')
桌子上可能有几个约翰。我怎样才能获得这个特定约翰的GUID?
答案 0 :(得分:2)
一种方法是预生成GUID
并在所有查询中使用它。这是我在许多地方使用的方式。
DECLARE @personId UNIQUEIDENTIFIER
SET @personId = NEWID()
insert into Person values(@personId , 'John')
insert into Hobby(PersonId, HobbyName) values(@personId, 'Ping-pong')
OR
您可以使用临时表来输出插入的值,并在进一步的查询中使用它,假设以下语句只在一次调用中执行一次。
DECLARE @myIdentifier TABLE (
InsertedGuid UNIQUEIDENTIFIER
)
insert into Person
output inserted.PersonId into @myIdentifier
values(NEWID(), 'John')
insert into Hobby(PersonId, HobbyName)
values(SELECT InsertedGuid FROM @myIdentifier, 'Ping-pong')