实例分析简单介绍o型约束
作者:hongsy
时间:2007-01-25 9:50
参考资料:Rakesh.V.Chakote的Whats Constraint Type “O” ?
当基于一个单独的基表创建一个视图时,在该视图上执行的DML操作就像基表上执行一样。如果打算在视图上限制DML操作,可以在创建视图时使用with read only选项来控制。
eg1:
正常的视图:
hongsy@test>create or replace test_test
2 as select * from tttt;
create or replace test_test
*
ERROR 位于第 1 行:
ORA-00922: 缺少或无效选项
视图已建立。
hongsy@test>insert into test_test(departmentcode,departmentname,departshortname,departtypecode,hasstudent,hascourse,status)
2 values('16','test_test','test_test','1','Y','Y','有效');
已创建 1 行。
以上在视图上的操作就像在其表上操作一样。
eg2:
使用了with read only 的视图:
视图已建立。
当以上视图创建成功的时候,oracle内部在该视图上增加了一个用于限制使用DML操作的“o”型约束。
hongsy@test>select constraint_name,constraint_type
2 from user_constraints
3 where table_name=upper('test_readonly');
CONSTRAINT_NAME C
------------------------------ -
SYS_C0020995 O
此时不能在test_readonly上做任何DML操作,不能会报错:
hongsy@test>insert into test_readonly(departmentcode,departmentname,departshortname,departtypecode,hasstudent,hascourse,status)
2 values('17','test_readonly','test_readonly','1','Y','Y','有效');
insert into test_readonly(departmentcode,departmentname,departshortname,departtypecode,hasstudent,hascourse,status)
*
ERROR 位于第 1 行:
ORA-01733: 此处不允许虚拟列
版权所有,随意转载,不过请附上出处!非常感谢您的配合。