Oracle 11g学习笔记–约束(constraint )的使用
该关键词是为了添加约束条件
约束条件
- not null 使得数据库的字段值不能为空
- unique 使得所有行中不存在相同值,当时允许同时为空
- primary key 主键约束,不能为空,且字段值不能相同
- foreign key 必须在相应的表中存在该字段且存在对应的值
- check 满足check中的条件
- ref
看到这里有的童鞋可能会问,为什么要使用constraint?当没有这个关键词时,依然可以添加这些约束。那我们想来看看他的使用方法,然后再说这;
添加约束
1.创建表的时候:
create table table_name (
gender varchar2(4) constraint gender_error
check(gender in ('男','女'))
);
2.修改表的时候
--方法1:
alter table table_name
modify gender constraint gender_error
check(gender in('男','女'));
--方法2:
alter table table_name
add constraint gender_error
check(gender in('男','女'));
删除,禁用,启用约束
--删除约束
alter table table_name drop constraint gender_error;
--禁用约束1
alter table table_name
add constraint error uniqe(column_name) disable;
--禁用约束2
alter table table_name
disable constraint error ;
--启用约束
alter table table_name
enable constraint error ;
--这时,如果在禁用的过程中插入了不满足要求的数据,可以使用enable novalidate可以选择只对新数据应用这个约束
alter table table_name
enable novalidate constraint error ;
获取约束相关
通过查询user_constraints视图可以获取有关约束的信息
select
owner, --约束的所有者
constraint_name, --约束名
constraint_type, --约束类型(P,R,C,U,V,O)(主键,外键,check,unique....)
status, --约束的状态(enable,disable)
deferrable, --是否为可延迟
deferred --是立即执行,还是延迟执行
from
user_constraints
where
table_name = 'table_name';
使用优点
当没有使用constraint时,插入错误数据回提示:
ORA-00001: 违反唯一约束条件 (STORE.SYS_C007081)
而使用了之后:
ORA-00001: 违反唯一约束条件 (STORE.UNIQUE_ERROR)
这样很容易从后面括号中找到错误
注:关于删除和添加操作可能写的不太全面,可点击这里查看更多