我是SQL CHECK CONSTRAINT
的新手,需要验证我的表中三列的组合与另一行的列不匹配。
我有一个Report表,包括我需要检查的三列:NAME,CREATEDBY和TYPE。不能创建具有相同三个值的行的多个。
请帮忙!
CREATE TABLE Report(
ReportID INT IDENTITY(1,1) NOT NULL,
[Name] VARCHAR(255) NOT NULL,
CreatedBy VARCHAR(50) NOT NULL,
[Type] VARCHAR(50) NOT NULL,
PageSize INT NOT NULL DEFAULT 25,
Criteria XML NOT NULL
CONSTRAINT CHK_Name_CreatedBy_Type CHECK ([Name], CreatedBy, [Type])
)
ALTER TABLE Report
ADD CONSTRAINT PK_Report PRIMARY KEY (ReportID)
显然,约束目前没有意义,因为它没有提供布尔值......
CONSTRAINT CHK_Name_CreatedBy_Type CHECK ([Name], CreatedBy, [Type])
提前致谢!!
答案 0 :(得分:7)
您需要一个UNIQUE约束:
CONSTRAINT UNQ_Name_CreatedBy_Type UNIQUE ([Name], CreatedBy, [Type])