解决方案 »

  1.   

    LOCK TABLE table-name
    [ WITH HOLD ]
    IN { SHARE | EXCLUSIVE } MODE参数 table-name    表必须是基表,而不是视图。因为临时表数据是当前连接的本地数据,所以锁定全局临时表或局部临时表都无效。WITH HOLD 子句    如果指定该子句,锁一直保持到连接结束时。如果没有指定该子句,则提交或回退当前事务时将释放锁。SHARE 模式    禁止其它事务修改表,但允许它们读取表。在该模式下,只要没有其它的事务锁定所修改的行,就可以间接地或显式地使用 LOCK TABLE 更改表中的数据。EXCLUSIVE 模式    禁止其它事务访问表。任何其它事务都不能对表执行查询、任何更新或任何其它操作。如果用 LOCK TABLE t IN EXCLUSIVE MODE 排它性地锁定表 t,则服务器的缺省行为是不获取 t 的行锁定。将 SUBSUME_ROW_LOCKS 选项设置为 OFF 可以禁用此行为。
      

  2.   


    begin
    for i in reverse 1..1000000 loop
             insert into test1 values(i,'name'||i);
      end loop;
      
      commit;
      end;
    能针对  这个帮我写个demo不?  感激不尽呀。。
      

  3.   

    begin
      LOCK TABLE test1 IN EXCLUSIVE MODE;--锁定test1,不允许其他事务查询或修改
      --LOCK TABLE test1 IN SHARE MODE;--锁定test1,不允许其他事务修改,但是可以查询
      --上面锁定模式按照需求任选其一
      for i in reverse 1..1000000 loop
        insert into test1 values(i,'name'||i);
      end loop;
      commit;--锁表时未添加WITH HOLD,提交就可以自动释放锁
    end;