检查约束的作用就是让表中的数据更有意义。检查约束就是为了检测和过滤不符合实际意义的数据,比如说年龄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. 禁用检查约束
执行 alter table userinfo_c1 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
实例
如上一样。