Skip to content

值检查约束

值检查约束用于限定一个字段的取值范围,也可以限定多个字段值相互间的关系,其形式为:CHECK(值约束表达式)。

语法格式

sql
check_constriant_stmt::=
    [CONSTRAINT name] CHECK (expression)

参数说明

  • [CONSTRAINT name]:可选关键字,用于指定检查约束的名称。
  • name:约束的名称,用于唯一标识该约束。
  • CHECK:关键字,定义检查约束。
  • expression:布尔表达式,指定列值必须满足的条件。

示例

创建一张名为test_check的表,该表插入数据值要求id>10或者name值为chk,否则数据无法插入。

sql
-- 创建表
CREATE TABLE test_check(id INTEGER, name CHAR(10), CHECK(id>10 OR name ='chk'));

-- 插入数据
INSERT INTO test_check (id, name) VALUES (11, '张三');
INSERT INTO test_check (id, name) VALUES (5, 'chk');

-- 查询表
SELECT * FROM test_check;

ID | NAME | 
------------------------------------------------------------------------------
11 | abc|
5 | chk|

-- 插入无效数据,返回错误
INSERT INTO test_check (id, name) VALUES (5, 'cba');
Error: [E13008] 违反值检查约束
--