检查约束的作用就是让表中的数据更有意义。检查约束就是为了检测和过滤不符合实际意义的数据,比如说年龄1000,工资-500等这些数据。
语法:
create table table_name ( column_name datatype check(expressions)) ;
check 是检查关键字
expressions 是约束的条件
实例:
将salary 设置检查约束,使其>0 。
create table userinfo_c( id varchar2(10) primary key , username varchar2(20) , salary number(5,0) check(salary>0)) ;
执行
先执行实例,插入语句当 salary<0 的时候报错。
sql> create table userinfo_c( 2 id varchar2(10) primary key , 3 username varchar2(20) , 4 salary number(5,0) check(salary>0)) ; 表已创建。 sql> insert into userinfo_c values(1,'shao'-500) ; insert into userinfo_c values(1,'shao'-500) * 第 1 行出现错误: ora-00947: 没有足够的值 sql>
语法
constraint constraint_name check(expressions)
实例
create table userinfo_c1( id varchar2(10) primary key , username varchar2(20), salary number(5,0), constraint ck_salary check(salary>0) );
语法
add constraint constraint_name check(expressions)
实例
首先创建一个表
create table userinfo_c2( id varchar2(10) primary key, username varchar2(20), salary number(5,0) ) ;
添加检查约束。
alter table userinfo_c2 add constraint ck_salary_new check(salary>0) ;
语法
alter table table_name disable|enable constraint constraint_name
实例
alter table userinfo_c1 disable constraint ck_salary ;
运行
1. 要查看userinfo_1 的禁用状态, 首先 desc user_constraints 看看数据字典的字段, 我们要看constraint_name , constraint_type status 类型。
2. 执行 select constraint_name ,constraint_type, status from user_constraints where table_name=’userinfo_c1’
;来查看。
3. 禁用检查约束。 disable constraint 查找的constraint名字 ;
sql> desc user_constraints 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- owner varchar2(30) constraint_name not null varchar2(30) constraint_type varchar2(1) table_name not null varchar2(30) search_condition long r_owner varchar2(30) r_constraint_name varchar2(30) delete_rule varchar2(9) status varchar2(8) deferrable varchar2(14) deferred varchar2(9) validated varchar2(13) generated varchar2(14) bad varchar2(3) rely varchar2(4) last_change date index_owner varchar2(30) index_name varchar2(30) invalid varchar2(7) view_related varchar2(14) sql> select constraint_name ,constraint_type,status from user_constraints where table_name='userinfo_c1' ; constraint_name c status ------------------------------ - -------- ck_salary c enabled sys_c0010837 p enabled sql> alter table userinfo_c1 disable constraint ck_salary ; 表已更改。 sql> select constraint_name ,constraint_type,status from user_constraints where table_name='userinfo_c1' ; constraint_name c status ------------------------------ - -------- ck_salary c disabled sys_c0010837 p enabled sql>
语法
alter table table_name drop constraint constraint_name
实例
如上一样。
如对本文有疑问, 点击进行留言回复!!
Navicate 如何导出数据库中的存储过程、事件、视图等?
每日一记:Oracle升级2020年4月份的数据库补丁Database Patch Set Update : 11.2.0.4.200414 (30670774)
Oracle 19.3 dataguard for Redhat 7.6
网友评论