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 有什么作用
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 有什么作用
Specify WITH READ ONLY to indicate that the table or view cannot be updated.这样等于通知ORALCE,只是查看,不做做更新。速度上会加快,不需要加锁。
普通的select不是也不会加锁的吗? 不是只有for update才会加锁么难道默认的select就是with read only??
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 的数据不允许更新。
我不知到你的意思是不是select语句后面直接用with read only , 请问直接用行吗 我why测试就是不行啊??新手学习中了
不屑与你争论,自己看吧。[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
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
select * from AAAA where 1= 1 with read only
这个是可以成功的,不好意思我前面没有说明清楚。