SQL检查多列的约束

Bue*_*KoW 3 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)
Run Code Online (Sandbox Code Playgroud)

显然,约束目前没有意义,因为它没有提供布尔值...

CONSTRAINT CHK_Name_CreatedBy_Type CHECK ([Name], CreatedBy, [Type])
Run Code Online (Sandbox Code Playgroud)

提前致谢!!

A-K*_*A-K 7

您需要一个UNIQUE约束:

CONSTRAINT UNQ_Name_CreatedBy_Type UNIQUE ([Name], CreatedBy, [Type])
Run Code Online (Sandbox Code Playgroud)