oracle檢視可以update嗎
create or replace view update_ed as
select e.empno,e.ename,d.deptno,d.dname,e.comm from emp e,dept d where e.deptno = d.deptno
select * from update_ed t
update update_ed set comm=1000
update /*+ BYPASS_UJVC */update_ed set comm=1000
update update_ed set ename = 'HANDE' where empno=7654
update /*+ BYPASS_UJVC */update_ed set ename = 'HANDE' where empno=7654
/*insert into update_ed(empno,ename,deptno,dname) values('1001','KKK','90','XXH')
insert into \*+ BYPASS_UJVC *\update_ed(empno,ename,deptno,dname) values('1001','KKK','90','XXH')
insert into update_ed(ename) values('KKK')*/
*****************************************************************************************
一說到檢視是否可以update,我就在想,如果檢視只包含一張表,應該是可以update的,因為SQL會執行查詢轉換,將檢視轉成表。那多個表關聯的檢視,是否可以update呢,下面我們來做個試驗:
SQL> create table t1 as select * from dba_objects;
表已建立。
SQL> create table t2 as select * from dba_objects;
表已建立。
-- 可以看到單個表建檢視,是可以update
SQL> create or replace view v_test as select * from t1;
檢視已建立。
SQL> update v_test set subobject_name=owner;
已更新50593行。
SQL> commit;
提交完成。
-- 多個表建檢視,需要加hint BYPASS_UJVC後才能update成功
SQL> create or replace view v_test as select t1.* from
2 t1,t2 where t1.object_id=t2.object_id;
檢視已建立。
SQL> update v_test set subobject_name=owner;
update v_test set subobject_name=owner *
第 1 行出現錯誤:
ORA-01779: 無法修改與非鍵值儲存表對應的列
SQL> update /*+ BYPASS_UJVC */v_test set subobject_name=owner;
已更新50592行。
SQL> commit;
提交完成。
SQL> create or replace view v_test as select t1.object_id,t2.subobject_name,
2 t1.owner from
3 t1,t2 where t1.object_id=t2.object_id;
檢視已建立。
SQL> update /*+ BYPASS_UJVC */v_test set subobject_name=owner;
已更新50592行。
SQL> commit;
提交完成。
select e.empno,e.ename,d.deptno,d.dname,e.comm from emp e,dept d where e.deptno = d.deptno
select * from update_ed t
update update_ed set comm=1000
update /*+ BYPASS_UJVC */update_ed set comm=1000
update update_ed set ename = 'HANDE' where empno=7654
update /*+ BYPASS_UJVC */update_ed set ename = 'HANDE' where empno=7654
/*insert into update_ed(empno,ename,deptno,dname) values('1001','KKK','90','XXH')
insert into \*+ BYPASS_UJVC *\update_ed(empno,ename,deptno,dname) values('1001','KKK','90','XXH')
insert into update_ed(ename) values('KKK')*/
*****************************************************************************************
一說到檢視是否可以update,我就在想,如果檢視只包含一張表,應該是可以update的,因為SQL會執行查詢轉換,將檢視轉成表。那多個表關聯的檢視,是否可以update呢,下面我們來做個試驗:
SQL> create table t1 as select * from dba_objects;
表已建立。
SQL> create table t2 as select * from dba_objects;
表已建立。
-- 可以看到單個表建檢視,是可以update
SQL> create or replace view v_test as select * from t1;
檢視已建立。
SQL> update v_test set subobject_name=owner;
已更新50593行。
SQL> commit;
提交完成。
-- 多個表建檢視,需要加hint BYPASS_UJVC後才能update成功
SQL> create or replace view v_test as select t1.* from
2 t1,t2 where t1.object_id=t2.object_id;
檢視已建立。
SQL> update v_test set subobject_name=owner;
update v_test set subobject_name=owner *
第 1 行出現錯誤:
ORA-01779: 無法修改與非鍵值儲存表對應的列
SQL> update /*+ BYPASS_UJVC */v_test set subobject_name=owner;
已更新50592行。
SQL> commit;
提交完成。
SQL> create or replace view v_test as select t1.object_id,t2.subobject_name,
2 t1.owner from
3 t1,t2 where t1.object_id=t2.object_id;
檢視已建立。
SQL> update /*+ BYPASS_UJVC */v_test set subobject_name=owner;
已更新50592行。
SQL> commit;
提交完成。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29209863/viewspace-2131319/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 檢視可以DML操作的條件Oracle
- Laravel 8 控制器可以直接返回物件給檢視嗎?Laravel物件
- 利用檢視 V$FIXED_VIEW_DEFINITION 可以檢視Oracle很多底層的東西ViewOracle
- 檢視insert,delete,update對基表的影響(檢視初識)delete
- 網站可以檢測到代理嗎?網站
- 物化檢視日誌對UPDATE的影響
- 檢視、修改oracle字符集,檢視oracle版本Oracle
- Oracle PSU (Patch Set Update)- 10g補丁列表及如何檢視補丁Oracle
- Oracle檢視:常用動態效能檢視Oracle
- oracle效能檢視Oracle
- oracle檢視大全Oracle
- 管理oracle檢視Oracle
- oracle物化檢視Oracle
- 【體系結構】dump檢視update操作redo日誌
- Lucene可以對MYSQL進行全文檢索嗎?MySql
- 檢視引數是否可以動態修改
- Oracle OCP(24):檢視Oracle
- Oracle EMGC檢視埠OracleGC
- Oracle dba 常用檢視Oracle
- Oracle檢視TOP SQLOracleSQL
- oracle 建立物化檢視Oracle
- oracle檢視基本操作Oracle
- Oracle AWR 配置檢視Oracle
- Oracle檢視引數Oracle
- Oracle日常效能檢視Oracle
- Oracle ASM檢視資訊OracleASM
- oracle檢視詳解Oracle
- Oracle 物化檢視建立Oracle
- oracle常用檢視2Oracle
- oracle--07檢視Oracle
- ORACLE 檢視介紹Oracle
- 簡介oracle檢視Oracle
- Oracle普通檢視和物化檢視的區別Oracle
- 【檢視】oracle 資料字典檢視之 DICT / DICTIONARYOracle
- 【檢視】oracle 資料字典檢視之 “小”檢視 CAT, TAB, SEQ, SYN ...Oracle
- 可以用WebRTC來做視訊直播嗎?Web
- 意外之喜,公司開發環境Oracle 11g可以查閱V$檢視~開發環境Oracle
- DB2 V9新特性:可以檢視top sql了,類似oracleDB2SQLOracle