一个系统可以允许多人登录,那么如何保证系统中的一条记录有一个人在操作的时候,另外一个人无法操作此条记录?我是用gridview控件来显示多条数据记录的。

解决方案 »

  1.   

    时间戳单行并发很有效timestamp   
    数据库的锁机制和事务处理

    SELECT * FROM table WITH (HOLDLOCK)   
    其他事务可以读取表,但不能更新删除SELECT * FROM table WITH (TABLOCKX)   
    其他事务不能读取表,更新和删除   
    using(TransactionScope scope = new TransactionScope())
    {
    //方法1   
    //方法2
    scope.Complete();
    } 数据库锁应该仅仅用在2、3秒钟可以保证结束的程序中。
      

  2.   

    但是如果要实现:一个登录用户打开one.aspx页面,点击了该页面下的gridview控件中一行后,跳转到另外一个页面two.aspx,然后用户在two.aspx页面处理,在这个过程中其他登录用户不能对该条数据进行操作,直到这个用户点击two.aspx页面上的确认按钮,返回到one.aspx页面后,其他用户才可以操作。而且在two.aspx页面处理时间一般都会很长。对这种情况这个貌似不是很适合?!(补充,gridview控件的数据来自多个表)