oracle 建立檢視用 with check option 子句詳解
oracle的檢視是一個很有用的工具,在很多應用中的應用到。
在oracle檢視中,對於簡單檢視,oracle 允許進行 dml 操作 ,這就是說明如果我們在一個表上建立了一個檢視,前提是沒有限制對它 dml 操作,我就可以透過這個檢視往表裡插入資料。正是由於這種原因,如果我們在建立檢視時,用到 where 子句進行了限制。那麼我們透過檢視插入資料時,又會不會同樣受到 where 子句的限制呢?答案是,如果你在建立檢視時,使用where 子句限制時沒有使用到 with check option 子句 時,當你在透過檢視插入資料時,oracle 就不會檢查 where 子句的限制條件。
下面我用例子來說明:
1. 建立表
SQL> create table s_tab ( id number ) ;
Table created.
SQL>
2.建立檢視(不用 with check option)
SQL> create or replace view s_view
2 as
3 select * from s_tab
4 where id < 5 ;
View created.
3. 插入資料測試
SQL> insert into s_view values ( 1) ;
1 row created.
SQL> insert into s_view values (10 ) ;
1 row created.
SQL> select * from s_view ;
ID
----------
1
SQL>
SQL> select * from s_tab ;
ID
----------
1
10
SQL>
結果沒有進行檢查
4. 建立檢視(用到 with check option)
SQL> create or replace view s_view
2 as
3 select * from s_tab
4 where id < 5
5 with check option ;
View created.
5. 插入資料
SQL> delete from s_tab ;
2 row deleted.
SQL> insert into s_view values ( 1) ;
1 row created.
SQL> insert into s_view values (10) ;
insert into s_view values (10)
*
ERROR at line 1:
ORA-01402: view WITH CHECK OPTION where-clause violation
SQL> select * from s_view ;
ID
----------
1
SQL> select * from s_tab ;
ID
----------
1
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-1075741/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE WITH CHECK OPTION子句詳解Oracle
- 【檢視】with check option
- WITH CHECK OPTION 詳解
- 檢視中with check option的作用是什麼?
- 使用檢視配合With Check Option實現複雜校驗
- Oracle檢視授權(with grant option)Oracle
- oracle檢視詳解Oracle
- Oracle物化檢視詳解Oracle
- Using the WITH CHECK OPTION
- create view with check optionView
- oracle 建立物化檢視Oracle
- Oracle 物化檢視建立Oracle
- insert WITH CHECK OPTION的用法
- 物化檢視詳解
- ORACLE中的物化檢視建立Oracle
- 用netstat -ano檢視本機埠詳解
- calcite物化檢視詳解
- MySQL View(檢視)詳解MySqlView
- ZT 物化檢視詳解
- Oracle 11g 建立物化檢視Oracle
- Oracle 物化檢視 詳細錯誤描述 檢視方法Oracle
- Oracle物化檢視的建立及使用(二)Oracle
- Oracle物化檢視的建立及使用(一)Oracle
- oracle檢視建立物件的DDL語句Oracle物件
- 資料庫檢視詳解資料庫
- MySQL中BETWEEN子句的用法詳解MySql
- 詳解MySQL中WHERE子句的用法MySql
- 詳解Oracle使用者許可權檢視的使用Oracle
- MySQL 建立檢視MySql
- Django(58)viewsets檢視集詳解DjangoView
- Android 檢視架構詳解Android架構
- View Transform(檢視變換)詳解ViewORM
- 資料庫檢視詳解 (轉)資料庫
- CUUG oracle物化檢視講解Oracle
- MySQL資料庫檢視:檢視定義、建立檢視、修改檢視MySql資料庫
- oracle SQL with 子句OracleSQL
- 詳解Oracle建立表的引數Oracle
- 詳解oracle使用者建立(中)Oracle