在本教程中, 我们将了解SQL CHECK约束以及如何应用它来强制域的完整性。
CHECK约束限制可以在表中的一列或多列中输入的值。CHECK约束自动强制列的数据完整性。
CHECK约束与返回TRUE或FALSE的逻辑表达式一起使用。可以为一个列创建多个检查约束,也可以为表中的多个列创建单个检查约束。
让我们看看batches 表:
例如,在batches 表中,我们可以添加一个检查约束,以确保结束日期总是大于或等于开始日期,并且开始日期总是大于或等于1970-01-01。逻辑表达式如下:
enddate >= begindate
AND
begindate >=
'1970-01-01'
如果您试图输入的开始日期小于结束日期,或者开始日期小于1970-01-01,那么数据库引擎将拒绝进行更改并发出错误信息。
就强制您可以在列中输入的值而言,CHECK检查约束类似于外键约束。
不同之处在于CHECK检查约束使用逻辑表达式来确定有效值,而外键约束使用来自另一个表中的列的值来确定。
我们可以在创建一个表时,定义一个检查约束,如下所示:
CREATE
TABLE
batches (
batchid
int
(11)
NOT
NULL
,
batchname
varchar
(255)
begindate
date
enddate
courseid
PRIMARY
KEY
(batchid),
CONSTRAINT
fk_courseid
FOREIGN
(courseid)
REFERENCES
courses (courseid),
chk_date
CHECK
(enddate >= begindate
)
在上面的语句中,我们使用了下面的子句定义一个CHECK约束:
检查约束的名称为chk_date,用于确定开始日期和结束日期列的有效值的逻辑表达式为
您可以使用ALTER TABLE 给一个现有的表添加一个检查约束,如下所示:
ALTER
batches
ADD
要删除检查约束,还需要使用ALTER TABLE语句。
例如,下面的语句删除了chk_date检查约束:
DROP
原文链接:https://codingdict.com/