如果我有一个带有标识列的表作为主键,我将使用scope_identity()来检索在范围内插入的最新标识值.如果主键不是标识列,而是使用默认值newid()生成值的nvarchar(256),该怎么办?执行插入后,是否有一个函数可以用来检索该值并将其存储在某个变量中?我需要将此值插入其他表中的其他列ID.
这是我所指的一个例子.在aspnet_Users表中,userID如上所述,如果我想在我自己的表中使用userID作为FK,是否可以使用该自动生成的newid()值,还是有更好的方法?如果这是最好的方法,我该如何轻松存储?
谢谢
你正在寻找的OUTPUT条款INSERT.请参阅此MSDN文章.
基本上:
DECLARE @newkey TABLE (keys varchar(25));
INSERT INTO actual_table (nonAutoIncId,other1,other2,other3)
OUTPUT INSERTED.nonAutoIncId INTO @newkey
VALUES ('NewId',1,2,3)
Run Code Online (Sandbox Code Playgroud)