LOCK TABLE <table_name> IN <lock_mode> MODE [NOWAIT];
一篇文章对share模式解释如下:
共享(SHARE, S):共享锁将锁定表,仅允许其他用户查询表中的行,但不允许插入、更新或删除行。多个用户可以同时在同一个表中放置共享锁,即允许资源共享,因此得名“共享锁”。例如,如果用户每天都需要在结帐时更新日销售表,则可以在更改该表时使用共享锁以确保数据的一致性。也就是说该表只能查,其他用户想修改表中行的数据,只需要对该表进行共享锁。
他提到,其他用户想修改表中行的数据,只需要对该表进行共享锁。请问,如何进行共享锁?

解决方案 »

  1.   

    执行一下命令即可:
    LOCK TABLE table IN SHARE MODE; 他提到,其他用户想修改表中行的数据,只需要对该表进行共享锁。请问,如何进行共享锁? 
    这句话不对吧,一个transaction对A表拥有共享锁时,其它transaction无法对A表数据进行修改。
      

  2.   


    我的理解也是这样,直到前面的session commit或rollback后,后面那个session才能修改
      

  3.   

    请问共享锁该如何解开呢?我知道排他锁用commit或rollback解。
      

  4.   

    希望对你有帮助:
    --------------------
    拥有独占方式表封锁的事务,在出现如下条件之一时,便释放该封锁:   (1)、执行COMMIT或ROLLBACK语句。   (2)、退出数据库(LOG OFF) (3)、程序停止运行。   独占方式封锁通常用于更新数据,当某个更新事务涉及多个表时,可减少发生死锁。   DML锁有如下三种封锁方式:   (1)、共享封锁方式(SHARE)   (2)、独占封锁方式(EXCLUSIVE)   (3)、共享更新封锁(SHARE UPDATE)   其中SHARE,EXCLUSIVE用于表封锁,SHARE UPDATE用于行封锁。   1、共享方式的表封锁   共享方式的表封锁是对表中的所有数据进行封锁,该锁用于保护查询数据的一致性,防止其它用户对已封锁的表进行更更新。其它用户只能对该表再施加共享方式的锁,而不能再对该表施加独占方式的封锁,共享更新锁可以再施加,但不允许持有共享更新封锁的进程做更新。共享该表的所有用户只能查询表中的数据,但不能更新。共享方式的表封锁只能由用户用SQL语句来设置,基语句格式如下:  LOCK TABLE <表名>[,<表名>]...   IN SHARE MODE [NOWAIT] 
    文章出处:http://www.diybl.com/course/7_databases/oracle/oraclexl/200866/123090.html