0

我有一张桌子,它有一个属性设置为身份。我想获取在向数据库输入值后将生成的身份属性的值。

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

4

2 回答 2

1

我建议不要尝试使用设置为使用整数列作为主键的表来执行此操作。如果您只是获取先前的 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

于 2013-06-24T12:44:45.743 回答
1

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

根据您要执行的操作,您的两个主要选择是:

  1. 使用客户端生成的 guid 作为您的标识符。这种混乱的顺序,所以类比不是很好,但想象一下,如果每个走进来的顾客都能生成一个他们确信以前从未使用过的随机数。他们可以在取号码之前用它来填写表格。

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

为什么你认为你需要这些信息?你可以使用这些策略中的任何一个吗?

于 2013-06-24T21:09:33.677 回答