2011-03-21 88 views
3

我是SQL CHECK CONSTRAINT的新手,需要驗證我的表中三列的組合與另一行中的列不匹配。SQL檢查多列的約束

我有一個報表,包括三列,我需要檢查:名稱,CREATEDBY和類型。可以創建這三個值相同的行的倍數。

請幫忙!

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

在此先感謝!

回答

7

你需要一個唯一的約束:

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

啊,哈!這樣做更有意義。感謝您及時的回覆! – BueKoW 2011-03-21 14:50:44