比如,2个员工在各自的电脑上面添加商品的数据。他们要按照编码的顺序添加。目前数据库的编码到了100这里了,而他们彼此之间都不知道另外一个人也在添加数据。所以,他们在各自的界面中,输入的编码都是101.程序本身会判断这个编码是否在数据库中,如果有,就不会让数据插入。如果这2个人不是在同一时间插入的话,没问题,其中一个后添加到人,会提示修改编码。但是万一,这2个人在同一时刻同一秒同时点击了添加的话。我不知道数据库会有什么反应。没做过这方面的测试。虽说是概率很小,但也可能会出现。那么,如何处理这个问题呢?

解决方案 »

  1.   

    搞一个自增列不就行了,自增列是DBMS自己进行维护的
      

  2.   

    A:
    1.建立一个存放编号的表,只需存放编号的最大值。
    2.在添加新编号时锁表,直到新编号正确存入时再解锁。(锁为不可读)
    3.在添加新编号处理异常,B:
    将编号作为唯一主键,主键冲突由数据库自己处理。A是冲突前做好判断,防止冲突;B是冲突发生后将后添加的数据取消。
      

  3.   

    锁很高深么?
    select * from table with tablockx 为表table开启排它锁