在数据库中插入之前获取标识属性值

本文关键字:获取 标识 属性 数据库 插入 | 更新日期: 2023-09-27 18:19:50

我有一个表,其中一个属性设置为标识。我想获得在向数据库输入值后生成的标识属性的值。

我有由EmpID和EmpName组成的EmpTable。EmpID设置为Identity。在向数据库中插入新行之前,我想获取EmpID值。

在数据库中插入之前获取标识属性值

我建议不要对设置为使用整数列作为主键的表执行此操作。如果你只是简单地获取以前的ID并递增它,你会遇到并发问题。相反,你应该使用GUID(SQL中的唯一标识符)作为主键。

这将允许您在代码中生成一个新的GUID,该GUID可以在稍后阶段安全地保存到数据库中。

http://msdn.microsoft.com/en-us/library/system.guid.newguid.aspx

http://msdn.microsoft.com/en-us/library/ms187942.aspx

当然,服务器知道自动递增计数在其序列中的位置,但对这些信息几乎没有任何用处。想象一下,你去邮局,他们分发有编号的车票,这样他们就可以按顺序为顾客服务。当然,你可以问他们下一个号码是什么,但由于任何人都可以随时走进来,你不知道你会得到那个号码。如果你不知道你会得到它,你就不能用它做任何事情——例如,把它作为参考号写在表格上是错误的。

根据你想做的事情,你的两个主要选择是:

  1. 使用客户端生成的guid作为标识符。这种方式会打乱订单,所以这个类比不太好,但想象一下,如果每个走进来的顾客都能生成一个他们确信以前从未使用过的随机数。他们可以在取数字之前用它填写表格。

  2. 取一个数字,但要在事务中使用其他操作。客户可以取一个号码并用它来填写一些文件。如果他们意识到他们把钱忘在家里了,他们就会把所有东西都扔掉,而你永远不会打他们的电话。

你认为你为什么需要这些信息?你能用这两种策略中的任何一种吗?