我有以下存储过程
UIButton
是否有更有效的方法返回最后一个带有id和关联数据的插入记录?
答案 0 :(得分:2)
在output子句
中使用Inserted
正如下文所述:
CREATE PROCEDURE [dbo].[spInsert]
@name nvarchar(128),
AS
DECLARE @MyTableVar table(
Name varchar(50),
Identifier uniqueidentifier
;
insert into NameIdentifier
( Name, Identifier)
values
( @name, NEWID());
OUTPUT INSERTED.Name, INSERTED.Identifier
INTO @MyTableVar
SELECt Name,Identifier from @MyTableVar
Refreance: Best way to get identity of inserted row?
答案 1 :(得分:1)
SCOPE_IDENTITY()
用于获取范围内标识列中最后生成的标识值,对于GUID
值,您可以在插入之前获取guid,就像我在下面的代码中所做的那样,或者您使用OUTPUT子句来获取Insert语句生成的guid。
CREATE PROCEDURE [dbo].[spInsert]
@name nvarchar(128)
AS
BEGIN
SET NOCOUNT ON;
Declare @NewID UNIQUEIDENTIFIER = NEWID();
insert into NameIdentifier ( Name, Identifier)
values( @name, @NewID);
SELECT * FROM NameAge where Id = @NewID;
END
答案 2 :(得分:-2)
这可以为您提供所需的功能。
UIView
编辑:这将返回新插入行的ID。
答案 3 :(得分:-2)
您可以通过使用SQL Server的输出子句来实现此目的,您可以阅读有关此here的更多信息
if exists (select 1 from sys.tables where name = 'NameIdentifier ')
drop table NameIdentifier
create table NameIdentifier
(
id BIGINT IDENTITY(1,1)
,Name VARCHAR(100)
,Identifier uniqueidentifier
)
DECLARE @id TABLE
(
ID BIGINT
)
INSERT INTO NameIdentifier (Name,Identifier)
OUTPUT INSERTED.id INTO @id
VALUES('abcd',NEWID())
SELECT * FROM NameIdentifier N, @id I where N.id = I.id