如何使用 SQL 服务器创建允许 2 个选项的约束?
How to create a constraint that allows 2 options using SQL Server?
任何人都可以帮助说明我如何使用 SQL 服务器创建一个允许 2 个选项的约束吗?
例如,我希望只有在 SQL 方面具有中级或高级知识的新候选人才有可能添加。
所以,我像下面这样编码,但它不起作用。
CREATE TABLE Candidates
(
Name VARCHAR(150) NOT NULL UNIQUE,
BirthDate DATE NOT NULL,
SQLlevel VARCHAR(100) NOT NULL
CHECK (SQLlevel = 'Intermediate' OR 'Advanced')
)
提前致谢。
您可以使用 in
:
CREATE TABLE Candidates (
Name VARCHAR(150) NOT NULL UNIQUE,
BirthDate DATE NOT NULL,
SQLlevel VARCHAR (100) NOT NULL,
CHECK (SQLlevel IN ('Intermediate', 'Advanced'))
)
解释一下为什么您的布尔表达式不起作用:
SQLlevel = 'Intermediate' OR 'Advanced'
您在 OR
之后的表达式不是布尔表达式,它只是一个文字。您必须每次都定义比较运算符。如果您想使用 OR
,则需要执行以下操作:
CREATE TABLE Candidates (Name varchar(150) NOT NULL UNIQUE,
BirthDate date NOT NULL,
SQLlevel varchar(100) NOT NULL CHECK (SQLlevel = 'Intermediate' OR SQLlevel = 'Advanced'));
您漏掉了 CONSTRAINT
这个词和一个名字
CREATE TABLE Candidates
(
Name VARCHAR(150) NOT NULL UNIQUE,
BirthDate DATE NOT NULL,
SQLlevel VARCHAR(100) NOT NULL,
constraint chck_candidates_levels
CHECK (SQLlevel in('Intermediate', 'Advanced'))
);
任何人都可以帮助说明我如何使用 SQL 服务器创建一个允许 2 个选项的约束吗?
例如,我希望只有在 SQL 方面具有中级或高级知识的新候选人才有可能添加。
所以,我像下面这样编码,但它不起作用。
CREATE TABLE Candidates
(
Name VARCHAR(150) NOT NULL UNIQUE,
BirthDate DATE NOT NULL,
SQLlevel VARCHAR(100) NOT NULL
CHECK (SQLlevel = 'Intermediate' OR 'Advanced')
)
提前致谢。
您可以使用 in
:
CREATE TABLE Candidates (
Name VARCHAR(150) NOT NULL UNIQUE,
BirthDate DATE NOT NULL,
SQLlevel VARCHAR (100) NOT NULL,
CHECK (SQLlevel IN ('Intermediate', 'Advanced'))
)
解释一下为什么您的布尔表达式不起作用:
SQLlevel = 'Intermediate' OR 'Advanced'
您在 OR
之后的表达式不是布尔表达式,它只是一个文字。您必须每次都定义比较运算符。如果您想使用 OR
,则需要执行以下操作:
CREATE TABLE Candidates (Name varchar(150) NOT NULL UNIQUE,
BirthDate date NOT NULL,
SQLlevel varchar(100) NOT NULL CHECK (SQLlevel = 'Intermediate' OR SQLlevel = 'Advanced'));
您漏掉了 CONSTRAINT
这个词和一个名字
CREATE TABLE Candidates
(
Name VARCHAR(150) NOT NULL UNIQUE,
BirthDate DATE NOT NULL,
SQLlevel VARCHAR(100) NOT NULL,
constraint chck_candidates_levels
CHECK (SQLlevel in('Intermediate', 'Advanced'))
);