版权声明
- 本文原创作者:清风不渡
- 博客地址:https://blog.csdn.net/WXKKang
一、CHECK约束
在数据库中,CHECK 约束是指约束表中某一个或者某些列中可接受的数据值或者数据格式,如果对单个列定义 CHECK 约束,那么该列只允许特定的值;如果对一个表定义 CHECK 约束,那么此约束会基于行中其他列的值在特定的列中对值进行限制
当除去某个表时,对这个表的CHECK 约束也将同时被去除
1、基本语法
创建表(CREATE TABLE)时的CHECK约束
(1)在MySQL数据库中创建表时定义某一列的CHECK约束应该使用以下语法:
CREATE TABLE table_name(
column_name1 int NOT NULL,
column_name2 data_type (size) NOT NULL,
column_name3 data_type (size),
column_name4 data_type (size),
...
CHECK (column_name1 > 0)
)
(2)在SQL Server / Oracle / MS Access数据库中创建表时定义某一列的CHECK约束应该使用以下语法:
CREATE TABLE table_name(
column_name1 int NOT NULL CHECK (column_name1>0),
column_name2 data_type (size) NOT NULL,
column_name3 data_type (size),
column_name4 data_type (size),
...
)
(3)如需命名 CHECK 约束,并定义多个列的 CHECK 约束则可使用下面的语法(MySQL / SQL Server / Oracle / MS Access):
CREATE TABLE table_name(
column_name1 int NOT NULL,
column_name2 varchar (255) NOT NULL,
column_name3 data_type (size),
column_name4 data_type (size),
...
CONSTRAINT chk_name CHECK (column_namw1 >0 AND column_name2='xxx')
)
修改表(ALTER TABLE)时的CHECK约束
(1)当表已被创建时,如需在某一列创建 CHECK 约束则可使用下面的语法(MySQL / SQL Server / Oracle / MS Access):
ALTER TABLE table_name
ADD CHECK (column_name1>0)
(2)如需命名 CHECK 约束,并定义多个列的 CHECK 约束则可使用下面的语法(MySQL / SQL Server / Oracle / MS Access):
ALTER TABLE table_name
ADD CONSTRAINT chk_name CHECK (column_name1 >0 AND column_name2='xxx')
撤销CHECK约束
(1)在MySQL数据库中,如需撤销 CHECK 约束则可使用下面的语法:
ALTER TABLE table_name
DROP CHECK chk_name
(2)在SQL Server / Oracle / MS Access数据库中,如需撤销 CHECK 约束则可使用下面的语法:
ALTER TABLE table_name
DROP CONSTRAINT chk_name