4 sql-server constraint ddl check-constraints
我有这个表,但检查约束给我一个错误:
列 'MedicamentRegulated' 的列 CHECK 约束引用另一列,表 'Medicaments'。
我已经看到这在 SQL Server 中是允许的,但我不知道为什么它不起作用:/
CREATE TABLE Medicaments (
MedicamentID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
Name VARCHAR(50),
DateValidity DATE,
MedicamentRegulated BIT CHECK((MedicamentRegulated = 1 AND DateValidity IS NOT NULL)
OR MedicamentRegulated = 0)
)
Run Code Online (Sandbox Code Playgroud)
您正在使用的语法是列级约束,因此它只能适用于列它连接到...尝试在表级别而不是命名您的约束(这也可以鼓励你给你的约束,而不是一个有意义的名字可怕的系统默认值):
CREATE TABLE dbo.Medicaments -- always use schema*
(
MedicamentID INT IDENTITY(1,1) NOT NULL,
Name VARCHAR(50),
DateValidity DATE,
MedicamentRegulated BIT,
CONSTRAINT pk_Med PRIMARY KEY (MedicamentID),
CONSTRAINT ck_Med_reg CHECK
(
(MedicamentRegulated = 1 AND DateValidity IS NOT NULL)
OR MedicamentRegulated = 0
)
);
Run Code Online (Sandbox Code Playgroud)
*见这篇文章。