有没有办法在sql DB中选择插入数据的PK值,然后将其存储到ASP.NET C#上的会话中?
例如:我已将某些内容插入数据库。在插入过程中,我想将PK返回给我并将其存储到会话中。
答案 0 :(得分:1)
同意这是一个有点模糊的问题,但希望这会有所帮助。
假设这是SQL Server,您可以使用scope_identity()。使用存储过程插入行,并回读值
e.g。假设这个表
create table Foo(FooId int identity(1,1) primary key, Field varchar(50))
创建程序
create procedure dbo.usp_FooInsert
@fieldValue varchar(50)
as
insert into Foo(field) values(@fieldValue)
select SCOPE_IDENTITY() as InsertedFooId
go
使用该过程代替当前的insert语句并回读结果。
答案 1 :(得分:0)
如果列已排序,唯一且为int类型,则可以将其更改为PK。
答案 2 :(得分:0)
詹姆斯回答是正确的,但我想补充一点。您可以根据自己的要求使用SCOPE_IDENTITY
,IDENT_CURRENT
或@@IDENTITY
。
SCOPE_IDENTITY
返回插入同一范围内IDENTITY列的最后一个IDENTITY值。
IDENT_CURRENT
返回在任何会话和任何范围内为特定表生成的最后一个标识值。
@@IDENTITY
返回在所有范围内为当前会话中的任何表生成的最后一个标识值