如何编写要求三个字段必填的SQL CHECK约束?
问题解答
首先,你已经给PatientMRN、FirstName、LastName三个字段加上了NOT NULL约束,这已经能强制要求这三个字段必须被输入值,不需要额外的CHECK约束来实现这个需求。
不过你的表创建语句存在几个错误,需要修正:
- 主键字段
PatientD在表定义里不存在,应该改为实际存在的字段,比如PatientMRN(它已经是NOT NULL UNIQUE,适合作为主键) - CHECK约束的语法错误:正确的CHECK约束需要明确条件表达式,且要闭合括号,同时表元素之间需要用逗号分隔
修正后的表创建语句如下:
CREATE TABLE Patient ( PatientMRN char(6) NOT NULL UNIQUE, FirstName varchar(24) NOT NULL, LastName varchar(64) NOT NULL, PRIMARY KEY (PatientMRN) -- 修正为主键字段为存在的PatientMRN -- 若执意要加CHECK约束(实际没必要),可添加下面这行,注意前面加逗号 -- , CHECK (PatientMRN IS NOT NULL AND FirstName IS NOT NULL AND LastName IS NOT NULL) );
补充说明:
NOT NULL是专门用来确保字段不能为NULL的约束,比CHECK约束更直接高效- 你提供的INSERT语句在表结构修正后可以正常执行
内容的提问来源于stack exchange,提问作者nancee
相关产品推荐
相关产品推荐

