SQL检查多列的约束

时间:2011-03-21 14:41:15

标签: sql sql-server

我是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])

提前致谢!!

1 个答案:

答案 0 :(得分:7)

您需要一个UNIQUE约束:

CONSTRAINT UNQ_Name_CreatedBy_Type UNIQUE ([Name], CreatedBy, [Type])