约束的四模式
2014-03-11 14:08
225 查看
对原来的数据做检查 validate/novalidated
对建完约束后进来的数据做检查enable/disable
有四种模式:
create table t1 (a int);
insert into t1 values(0);
alter table t1 add constraint t1_a check(a > 0);
alter table t1 add constraint t1_a check(a >= 0);
insert into table t1 values(-1);
不指明validate 或novalidate则默认为validate
alter table t1 drop constraint t1_a;
alter table t1 add constraint t1_a check(a > 0) enablenovalidate;
insert intot_edvn(a) values(-1);
而且不能直接truncate,delete等
alter table t1 drop constraint t1_a;
insert into t1 values(1);
insert into t1 values(2);
insert into t1 values(3);
alter table t1 add constraint t1_a PRIMARY KEY (a) disable validate;
tester@AD_TEST> alter table t1 add constraint t1_acheck(a > 0);
alter table t1 add constraint t1_a check(a > 0)
*
ERROR at line 1:
ORA-02293: cannot validate (TESTER.T1_A) - check constraintviolated
tester@AD_TEST> alter table t1 add constraint t1_acheck(a >= 0);
Table altered.
tester@AD_TEST> insert into table t1 values(-1);
insert into table t1 values(-1)
*
ERROR at line 1:
ORA-00903: invalid table name
tester@AD_TEST> alter table t1 drop constraint t1_a;
Table altered.
tester@AD_TEST> alter table t1 add constraint t1_acheck(a > 0) enable novalidate;
Table altered.
tester@AD_TEST> insert into t_edvn(a) values(-1);
insert into t_edvn(a) values(-1)
*
ERROR at line 1:
ORA-25128: No insert/update/delete on table with constraint(TESTER.CK_T_EDVN_D) disabled and validated
tester@AD_TEST> @ind2 t1
OWNER TABLE_NAME BLOCKS NUM_ROWS AVG_ROW_LEN LAST_ANALYZED
------------------------------------------------------------ ---------- ---------- ------------------------------
TESTER T1
1 row selected.
Display indexes where table or index name matches t1...
no rows selected
no rows selected
而且不能直接truncate
tester@AD_TEST> truncate table t1;
truncate table t1
*
ERROR at line 1:
ORA-25128: No insert/update/delete on table with constraint(TESTER.T1_A) disabled and validated
tester@AD_TEST> alter table t1 drop constraint t1_a;
Table altered.
tester@AD_TEST> truncate table t1;
Table truncated.
对建完约束后进来的数据做检查enable/disable
有四种模式:
ENABLE
VALIDATE
create table t1 (a int);
insert into t1 values(0);
alter table t1 add constraint t1_a check(a > 0);
alter table t1 add constraint t1_a check(a >= 0);
insert into table t1 values(-1);
不指明validate 或novalidate则默认为validate
ENABLE
NOVALIDATE(不对表加锁)
alter table t1 drop constraint t1_a;
alter table t1 add constraint t1_a check(a > 0) enablenovalidate;
insert intot_edvn(a) values(-1);
DISABLE
VALIDATE
(不建索引
,
而且不能直接truncate,delete等
)
alter table t1 drop constraint t1_a;
insert into t1 values(1);
insert into t1 values(2);
insert into t1 values(3);
alter table t1 add constraint t1_a PRIMARY KEY (a) disable validate;
DISABLE
NOVALIDATE
(感觉没啥用)
tester@AD_TEST> alter table t1 add constraint t1_acheck(a > 0);
alter table t1 add constraint t1_a check(a > 0)
*
ERROR at line 1:
ORA-02293: cannot validate (TESTER.T1_A) - check constraintviolated
tester@AD_TEST> alter table t1 add constraint t1_acheck(a >= 0);
Table altered.
tester@AD_TEST> insert into table t1 values(-1);
insert into table t1 values(-1)
*
ERROR at line 1:
ORA-00903: invalid table name
tester@AD_TEST> alter table t1 drop constraint t1_a;
Table altered.
tester@AD_TEST> alter table t1 add constraint t1_acheck(a > 0) enable novalidate;
Table altered.
tester@AD_TEST> insert into t_edvn(a) values(-1);
insert into t_edvn(a) values(-1)
*
ERROR at line 1:
ORA-25128: No insert/update/delete on table with constraint(TESTER.CK_T_EDVN_D) disabled and validated
tester@AD_TEST> @ind2 t1
OWNER TABLE_NAME BLOCKS NUM_ROWS AVG_ROW_LEN LAST_ANALYZED
------------------------------------------------------------ ---------- ---------- ------------------------------
TESTER T1
1 row selected.
Display indexes where table or index name matches t1...
no rows selected
no rows selected
而且不能直接truncate
tester@AD_TEST> truncate table t1;
truncate table t1
*
ERROR at line 1:
ORA-25128: No insert/update/delete on table with constraint(TESTER.T1_A) disabled and validated
tester@AD_TEST> alter table t1 drop constraint t1_a;
Table altered.
tester@AD_TEST> truncate table t1;
Table truncated.
相关文章推荐
- xml约束模式的作用。简述什么是格式良好但无效的xml文档,什么是有效的
- JavaScript严格模式约束规则
- 复杂事件处理(CEP)——事件模式,规则及约束
- SQL反模式笔记4——使用约束
- 【Javaweb学习笔记】XML和约束模式
- 在文档中未检测到语法约束(DTD 或 XML 模式)
- Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle
- Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle
- Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle
- Oracle OCP笔记(15)模式对象(表,约束,索引等)
- XML约束模式
- dtd(内部与外部)约束模式举例
- XML--约束模式
- xml约束模式
- Schema约束模式实例
- XML(二):约束模式
- 一个简单的态机模式工作流演示(2)(代码与实现)
- 《大话设计模式》第29章-OOTV杯超级模式大赛—模式总结(七 大结局,附本书序、前言和样章)
- 设计模式笔记 21. State 状态模式(行为型模式)
- [译文]JPA的实施模式:删除实体