Oracle_Oracle之UPDATE关键字NOWAIT的详解.docVIP

  • 3
  • 0
  • 约2.13千字
  • 约 3页
  • 2017-08-15 发布于重庆
  • 举报
Oracle_Oracle之UPDATE关键字NOWAIT的详解.doc

Oracle 之UPDATE 关键字NOWAIT的详解 1、FOR UPDATE 和 FOR UPDATE NOWAIT 的区别: 首先一点,如果只是SELECT 的话,Oracle是不会加任何锁的,也就是Oracle对 SELECT 读到的数据不会有任何限制,虽然这时候有可能另外一个进程正在修改表中的数据,并且修改的结果可能影响到你目前SELECT语句的结果,但是因为没有锁,所以SELECT结果为当前时刻表中记录的状态。 如果加入了FOR UPDATE, 则Oracle一旦发现(符合查询条件的)这批数据正在被修改,则不会发出该SELECT语句查询,直到数据被修改结束(被COMMIT),马上自动执行这个SELECT语句。 同样,如果该查询语句发出后,有人需要修改这批数据(中的一条或几条),它也必须等到查询结束后(COMMIT)后,才能修改。 FOR UPDATE NOWAIT和 FOR UPDATE 都会对所查询到得结果集进行加锁,所不同的是,如果另外一个线程正在修改结果集中的数据,FOR UPDATE NOWAIT 不会进行资源等待,只要发现结果集中有些数据被加锁,立刻返回 “ORA-00054错误,内容是资源正忙, 但指定以 NOWAIT 方式获取资源”。 FOR UPDATE 和 FOR UPDATE NOWAIT 加上的是一个行级锁,也就是只有符合WHERE条件的数据被加锁

文档评论(0)

1亿VIP精品文档

相关文档