如果某一个表,此时某个用户正在编辑(添加数据、用DTS导数据、删除数据等)想要在访问此表前先判断此表是否正被编辑,有什么方法?有相应的SQL语句吗?

解决方案 »

  1.   


    这样的操作数据库服务器会自动维护的,一般不需要人为进行干预的。依赖性很强的相关SQL语句可以通过事物的方式来进行处理。
      

  2.   

    如果当前表正在DML操作,肯定会锁,这个不用了解。如果在不知情的前提下,判断当前表是否被锁,可以试试:
    declare @name varchar(40)
    set @name = '表名'
    if exists (
    select DB_NAME(rsc_dbid),OBJECT_NAME(rsc_objid),req_mode 
    from sys.syslockinfo
    where rsc_type = 5 and OBJECT_NAME(rsc_objid) = @name
    )
    BEGIN
    print '该表被锁'
    END
    else
    print '该表未锁'
      

  3.   

    可以在访问时,加表锁,这样第二个人的所有操作都不行了!另外,查询被锁状态,可以参考下面的列子http://www.a3gs.com/BookViews.asp?InfoID=2551&classID=822&InfoType=0最后我的疑问是,这个案例是一个典型的升级锁状态引来并发问题的例子,所以在不了解业务的情况下,我建议慎用!
      

  4.   

    @alfred_2006 (5F)
    http://www.a3gs.com/BookViews.asp?InfoID=2551&classID=822&InfoType=0
    中的被锁是指发生阻塞为前提,在这里不适用。