获取最近插入的行的GUID

时间:2016-10-11 21:06:54

标签: sql-server

考虑这两个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?

1 个答案:

答案 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')