none
字段自动编号如何防止重复冲突 RRS feed

  • 问题

  • 1.数据表中的一个ID字段想做成是自动编号,但又不是单纯的数字,前面还有一些字母,具体形式如V000001,S000001,GS000001,递增值是1.这种编号如何设置呢?

    2. 在FORM中单击增加按钮时就会增加一个记录,上述的编号会自动显示出来,因为是多个客户端在同时操作,如果其他的客户端也在同时操作的话,会不会同时会出现多个编号如V000002,V000003,V000004.如果其中一个客户端没有保存数据如V000003这个记录没有保存,其他两个人保存了,岂不是表中就会少一条V000003的记录.这样的话这个编号就不会连续了,该如何处理呢?

    2010年12月3日 3:46

答案

  • 你好!

    1 使用系统的自增列功能,另外再设置一个列来存V000001,S000001 中的 V与S(这里看作为类别编码),输出的时候再将类别编码与自增列组合成并格式化效果显示(SQL和C#都可以做处理),比如将 V 和 1 组合成 V000001。

    2 在添加数据的时候使用.Net 提供的锁(lock)保证同一时间只有一个人操作。SQL 的事务也行。

    3 做这个业务的关键在于在插入数据时才产生新的自增ID,而不是在还没有插入前就显示自增编号。即便你要在插入前需要将自增编号显示给客户看,也要用插入时产生的自增编码为准(提示客户编码已变更),否则你就需要专门写一套逻辑来处理编码不连续,断号等等问题,会更复杂。


    知识改变命运,奋斗成就人生!
    • 已标记为答案 flywithme 2010年12月6日 3:44
    2010年12月5日 15:27
    版主

全部回复

  • 1。在程序中使用PadLeft函数

    private void button2_Click(object sender, EventArgs e)
            {
                for (int i = 0; i < 200; i++)
                {
                    string str = "v" + i.ToString().PadLeft(6, '0');
                    richTextBox1.AppendText(str+"\r\n");
                }
            }


    http://blog.csdn.net/zx13525079024
    2010年12月3日 5:11
  • 开心,您好!

    因为是表中的一个字段,所以想能够自动编号,也就是说每新增加一条记录后,编号就会自动加一.你的代码可以实现字母加数字连接成一个编号,但是如何取得数据表中的最后一条记录呢?还有就是如何防止编号重复呢?也就是第二个问题如何处理?那我再说详细一点吧.

    假如有十个客户端,同时都在往里面添加记录.当每一个客户端点"增加"按钮时,系统都会分配一个不会重复而且是连续的编号,但是现在假若其中有三个人没有对记录进行保存,这样就会有三个编号没有被写入到数据库中.从而造成编号会中断.那么应当如何处理才不会出现这种情况呢?

    2010年12月3日 5:31
  • 你好!

    1 使用系统的自增列功能,另外再设置一个列来存V000001,S000001 中的 V与S(这里看作为类别编码),输出的时候再将类别编码与自增列组合成并格式化效果显示(SQL和C#都可以做处理),比如将 V 和 1 组合成 V000001。

    2 在添加数据的时候使用.Net 提供的锁(lock)保证同一时间只有一个人操作。SQL 的事务也行。

    3 做这个业务的关键在于在插入数据时才产生新的自增ID,而不是在还没有插入前就显示自增编号。即便你要在插入前需要将自增编号显示给客户看,也要用插入时产生的自增编码为准(提示客户编码已变更),否则你就需要专门写一套逻辑来处理编码不连续,断号等等问题,会更复杂。


    知识改变命运,奋斗成就人生!
    • 已标记为答案 flywithme 2010年12月6日 3:44
    2010年12月5日 15:27
    版主
  • 谢谢.

     

    看来只好用您说的方法了.

    2010年12月6日 3:44