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物件
- Oracle中的for update 和 for update nowaitOracleAI
- Oracle OCP(24):檢視Oracle
- Oracle普通檢視和物化檢視的區別Oracle
- 在哪裡可以檢視Response
- oracle 檢視錶空間Oracle
- 11、Oracle中的檢視Oracle
- 網站可以檢測到代理嗎?網站
- 檢視oracle臨時表空間佔用率的檢視Oracle
- Oracle檢視歷史TOP SQLOracleSQL
- oracle檢視物件DDL語句Oracle物件
- 檢視ORACLE中鎖定物件Oracle物件
- oracle update left join查詢Oracle
- Oracle Critical Patch Update for October 2022Oracle
- ORACLE 檢視IP,解析機器名Oracle
- Oracle相關資料字典檢視Oracle
- Oracle常用檢視錶結構命令Oracle
- 19 Oracle Data Guard 相關檢視Oracle
- ORACLE常見檢視和表整理Oracle
- 【PDB】Oracle跨PDB檢視查詢Oracle
- Oracle 如何高效的檢視官方文件Oracle
- oracle 歷史檢視檢視,看這一篇就夠了Oracle
- 檢視oracle資料庫的連線數以及使用者檢視Oracle資料庫
- 開源Mizu可以檢視Kubernetes API流量API
- Oracle“並行執行”——監控檢視Oracle並行
- Oracle檢視執行計劃的命令Oracle
- Oracle物化檢視的建立及使用(二)Oracle
- Oracle物化檢視的建立及使用(一)Oracle
- 檢視oracle資料庫真實大小Oracle資料庫
- oracle 統計資訊檢視與收集Oracle
- 4.2.8 檢視元件的Oracle重啟配置元件Oracle
- oracle檢視被鎖的表和解鎖Oracle
- ORACLE多表關聯UPDATE語句Oracle
- Flutter日曆2.0,支援月檢視和周檢視,可以支援自定義風格Flutter
- 可以用WebRTC來做視訊直播嗎?Web
- oracle db link的檢視建立與刪除Oracle
- oracle 11g檢視alert日誌方法Oracle
- Linux中哪個命令可以檢視所有檔案?Linux