1. 目标
实例讲解在Oracle中如何使用CHECK约束(创建、启用、禁用和删除)
2. 什么是Check约束?
CHECK约束指在表的列中增加额外的限制条件。
注: CHECK约束不能在VIEW中定义。CHECK约束只能定义的列必须包含在所指定的表中。CHECK约束不能包含子查询。3. 创建表时定义CHECK约束
3.1 语法:
1
2
3
4
5
6
7
|
CREATE
TABLE
table_name
(
column1 datatype
null
/
not
,
column2 datatype
sql color1" style="border:0px!important; bottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:1.1em!important; margin:0px!important; outline:0px!important; overflow:visible!important; padding:0px!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-family:Consolas,
...
CONSTRAINT
constraint_name
CHECK
(column_name condition) [DISABLE]
);
|
其中,DISABLE关键之是可选项。如果使用了DISABLE关键字,当CHECK约束被创建后,CHECK约束的限制条件不会生效。
3.2 示例1:数值范围验证
create
table
tb_supplier
supplier_id number,monospace!important; font-size:1em!important; min-height:auto!important; background:none!important">supplier_name varchar2(50),monospace!important; font-size:1em!important; min-height:auto!important; background:none!important">contact_name varchar2(60),
/*定义CHECK约束,该约束在字段supplier_id被插入或者更新时验证,当条件不满足时触发。*/
check_tb_supplier_id
(supplier_id
BETWEEN
100
and
9999)
验证: |
5. 启用CHECK约束
5.1 语法
ENABLE
constraint_name;
5.2 示例
9
@H_403_522@
10
11
12
13
--重建表和CHECK约束
sql keyword" style="border:0px!important; bottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:1.1em!important; margin:0px!important; outline:0px!important; overflow:visible!important; padding:0px!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-family:Consolas,
/*定义CHECK约束,该约束尽在启用后生效*/
9999) DISABLE
);
--启用约束
tb_supplier ENABLE
check_tb_supplier_id;
6. 禁用CHECK约束
6.1 语法
6.2 示例
tb_supplier DISABLE
7. 约束详细信息查看
语句:
--查看约束的详细信息
select
constraint_name,
--约束名称
constraint_type,0)!important; background:none!important">--约束类型
table_name,0)!important; background:none!important">--约束所在的表
search_condition,0)!important; background:none!important">--约束表达式
status
--是否启用
from
user_constraints
--[all_constraints|dba_constraints]
where
constraint_name=
'CHECK_TB_SUPPLIER_ID'
;
8. 删除CHECK约束
8.1 语法
8.2 示例
check_tb_supplier_id;