日期:2014-05-20  浏览次数:20582 次

有没有什么好的办法实现两个用户不能同时读取同一条数据?
就是假如数据库中有1,2 两条数据

a,b两用户一次只能读取一条数据

a用户读取1数据 在界面修改此数据的时候,b用户此时只能读2这条数据

------解决方案--------------------


这里就改用到 数据库中的 锁 了; 
就是要解决数据库并发访问的机制 一条数据在同一时间内只能被一个用户修改,其他用户可以查询;;


锁又分为 行级锁,表级锁;
  
行级锁只对用户正在访问的行进行锁定。在使用 INSERT、UPDATE、DELETE 和 SELECT ... FOR UPDATE 等语句时,Oracle 会自动应用行锁定。

表级所将保护数据,在事务处理过程中,表级锁会限制对整个表的增、删、改操作。

LOCK TABLE <table_name> IN <look_mode> MODE [NOWAIT];
行共享(ROW SHARE, RS)
行排他(ROW EXCLUSIVE, RX)
共享(SHARE, S)
共享行排他(SHARE ROW EXCLUSIVE, SRX)
排他(EXCLUSIVE, X)

你自己看看吧