两个用户先后执行insert操作,如何提示第二个用户已有人插入数据?数据库表针对每一个业务只能有一条记录,两个用户在不同客户端进行插入操作,如何解决并发?是在数据库方面考虑还是在代码中进行操作?谢谢!

解决方案 »

  1.   

    在执行SQL的时候加上Transcation,干吗要提示第2个用户,第一个用户Insert的过程很长吗?如果就是简单插入几条sql,这个时间会很短,用户根本感觉不出来。
      

  2.   

    最好不要自己去控制锁,这些都是由SQL数据库自动管理的,除非你非常牛,不然你写的锁的效率不会比MS的自动管理效率好的。对于insert操作,不用提示第二个用户,时间确实是很短的,除非你插入的是数据十分复杂,可以用Transcation,如果你需要保证每一个业务只能有一条记录,程序就判断一下insert前是否有数据,然后再用事务控制insert就可以了。其余的交给SQL Server了。
      

  3.   

    最简单的在insert操作外面套个lock就ok了lock(obj)
    {
       insert();
    }obj要是全局的
      

  4.   

    airfei10的意思是,每次插入前先select表,看是否有针对的数据,有的话不执行以后的insert,没有再insert操作。
    整个项目中代码好多地方要这样。。,先看数据库里能不能解决吧?不想改代码了。谢谢airfei10。
      

  5.   

    参考Optimistic Currency方面的内容。配置数据源的时候不用过开发式并发的选项吗?选择它。然后在FormView.ItemInserted, DetailsView.IntemInserted里捕捉异常。