【发布时间】:2014-12-19 21:54:48
【问题描述】:
我想在插入之前获取新的 id(Identity)。所以,使用这个代码:
select SCOPE_IDENTITY() AS NewId from tblName
但是得到这个:
1- 空
2- 空
【问题讨论】:
-
为什么插入前需要值?
-
该表中的列是否有标识规范?
-
不,您不想在插入之前获得新身份。这样做的方法是使用 IDENT_CURRENT。然而,由于并发性,这是一个坏主意。你读过 SCOPE_IDENTITY 吗?它将返回当前范围内的最后一个标识值。如果您没有向具有标识的表中插入行,它将返回 NULL,因为没有值。
-
为什么要向用户显示身份?
-
好吧,如果您将其展示给用户,您需要保留该号码以停止使用它的另一个会话。最简单的方法是通过插入具有标识列的另一个表并使用从中分配的标识来对序列进行穷人的模拟。但是为什么用户在插入之前需要知道这一点呢?
标签: c# sql entity-framework sql-server-2008