SELECT crac.HEADER_ID /*PK*/,
       crac.COST_GROUP_ID,
       crac.COST_TYPE_ID,
       crac.PERIOD_ID,
       crac.RCV_TRANSACTION_ID,
       crac.NET_QUANTITY_RECEIVED,
       crac.TOTAL_QUANTITY_INVOICED,
       crac.QUANTITY_AT_PO_PRICE,
       crac.TOTAL_INVOICE_AMOUNT,
       crac.AMOUNT_AT_PO_PRICE,
       crac.TOTAL_AMOUNT,
       crac.COSTED_QUANTITY,
       crac.ACQUISITION_COST,
       crac.PO_UNIT_PRICE,
       crac.PRIMARY_UOM,
       crac.REC_EXCHG_RATE /* FOREIGN KEYS RESOLVED */,
       ccg.cost_group,
       cct.cost_type,
       cpp.period_name,
       rt.TRANSACTION_TYPE,
       rt.TRANSACTION_DATE /* ID */,
       crac.PO_LINE_LOCATION_ID /* WHO */,
       crac.creation_date,
       crac.created_by,
       crac.last_update_date,
       crac.last_updated_by
  FROM CST_PAC_PERIODS   cpp,
       CST_COST_GROUPS   ccg,
       CST_COST_TYPES    cct,
       RCV_TRANSACTIONS  rt,
       CST_RCV_ACQ_COSTS crac
 WHERE crac.PERIOD_ID = cpp.PAC_PERIOD_ID
   AND crac.cost_group_id = ccg.cost_group_id
   AND crac.cost_type_id = cct.cost_type_id
   AND crac.RCV_TRANSACTION_ID = rt.TRANSACTION_ID WITH READ ONLY
加了WITH READ ONLY 有什么作用

解决方案 »

  1.   

    WITH READ ONLY 
    Specify WITH READ ONLY to indicate that the table or view cannot be updated.这样等于通知ORALCE,只是查看,不做做更新。速度上会加快,不需要加锁。
      

  2.   

    请教一下
    普通的select不是也不会加锁的吗? 不是只有for update才会加锁么难道默认的select就是with read only??
      

  3.   

    建视图有三种模式:
    1、默认的模式,就是什么也不加。--可以更新的
    create or replace view view_a as
        select xxx from table_name;
    --不可以可以更新的
    create or replace view view_a as
        select xxx from table_name1 a,table_name2 b where a.xxx=b.xxx;
    --还有很多种情况不允许更新呢,比如视图中用了distinct、group by 等2、with read only 只读视图,不允许通过本视图更新本表create or replace view view_a as
        select xxx from table_name with read only;3、with check option 允许通过视图更新本表,但是要check 视图的where条件。create or replace view view_a as
        select xxx from table_name where id < 10 with check option;这种情况下,只能通过视图更新 id < 10 的数据,id >=10 的数据不允许更新。
      

  4.   

    哦……是在创建视图的时候加with read only喽那楼主那样在select后面直接加with read only有什么特殊作用吗?
      

  5.   


    我不知到你的意思是不是select语句后面直接用with read only  , 请问直接用行吗 我why测试就是不行啊??新手学习中了 
      

  6.   


    不屑与你争论,自己看吧。[TEST@ora10gr1#2009-12-18/08:06:45] SQL>desc t1;
     Name                                      Null?    Type
     ----------------------------------------- -------- ----------------------------
     ID                                        NOT NULL NUMBER
     NAME                                               VARCHAR2(10)[TEST@ora10gr1#2009-12-18/08:06:47] SQL>create or replace view t1_view as select * from t1View created.[TEST@ora10gr1#2009-12-18/08:07:03] SQL>select * from t1_view;no rows selected[TEST@ora10gr1#2009-12-18/08:07:14] SQL>select * from t1;no rows selected[TEST@ora10gr1#2009-12-18/08:07:45] SQL>insert into t1_view values(1,'a');1 row created.[TEST@ora10gr1#2009-12-18/08:07:49] SQL>select * from t1_view;        ID NAME
    ---------- ----------
             1 a[TEST@ora10gr1#2009-12-18/08:07:56] SQL>select * from t1;        ID NAME
    ---------- ----------
             1 a
    --select 后面直接加。。
    [TEST@ora10gr1#2009-12-18/08:07:59] SQL>select * from t1 with read only;
    select * from t1 with read only
                     *
    ERROR at line 1:
    ORA-00933: SQL command not properly ended
      

  7.   

    呵呵 我也测试了 也不成功
    SQL> select * from t_row_str with read only;
    select * from t_row_str with read only
                            *
    ERROR at line 1:
    ORA-00933: SQL command not properly ended
      

  8.   

    CREATE OR REPLACE VIEW A AS 
    select * from AAAA where 1= 1 with read only
    这个是可以成功的,不好意思我前面没有说明清楚。