Web表单下一代号生成方案

时间:2012-03-12 02:29:38

标签: asp.net sql-server

我有一个包含多个字段的网页表单第一个字段是员工编号,其中包含“EMP - 0001”格式。我通过考虑添加的最后一个Emp Number并将后一个部分转换为整数并添加一个来生成下一个员工编号

例如:拆分EMP - 0001 - >得到0001 - >将其转换为整数 - >添加一个 - >生成下一个没有EMP - 0002

下一个员工编号应该对用户可见。我的问题是当有多个用户使用system.imagine时,一个用户打开Web表单并且不保存记录。此员工编号是EMP - 0002.another用户打开网页表格他也看到EMP没有为0002,因为最后一条记录尚未保存。用户保存他获得的数字第0002.1st用户然后保存记录。所以最后我有重复的EMP号码数据库。我应该遵循哪种情况来应对这种情况

4 个答案:

答案 0 :(得分:0)

准确预测其ID的唯一方法是输入空白记录,获取所使用的ID,然后在输入表单时,使用其信息更新记录。但是,如果他们退出表单,则会留下空白记录。

答案 1 :(得分:0)

在数据库中插入记录并获取它返回的ID。如果您正确地打开并公开您的连接,那么您将不会遇到并发问题。

答案 2 :(得分:0)

您指出的当前方法很容易出现并发问题。我不会推荐你的。您有以下选择。

  1. 在数据库表中使用Identity列作为串行列(数据库会自动增加每个插入行操作的标识列 - 您不必通过代码指定它)SQL Server Identity < / LI>
  2. 使用database sequence(取决于您的数据库版本及其支持 - 数据库序列返回一个唯一的整数值 - 这也可以缓存,一旦表单加载就会在表单上显示 - 一旦生成,相同的顺序是从未再次生成过)
  3. 使用database trigger自动更新每行插入的Id列
  4. 根据您的要求,您可以选择一个选项。

答案 3 :(得分:0)

保存记录后,您可以给用户留言tah记录已保存,而您的Employee numnber为“EMP - 0002”。