2011-03-21 6 views
3

Je suis nouveau au SQL CHECK CONSTRAINT et j'ai besoin de quelque chose pour vérifier qu'une combinaison de trois colonnes dans ma table ne correspond pas à celles d'une autre ligne.Contrainte SQL Check pour plusieurs colonnes

J'ai une table de rapport comprenant trois colonnes que je dois vérifier par: NAME, CREATEDBY, et TYPE. Aucun multiple d'une ligne avec ces trois valeurs étant identique peut être créé.

Aidez s'il vous plaît!

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) 

De toute évidence, la contrainte fait actuellement aucun sens car elle ne fournit pas une valeur booléenne ...

CONSTRAINT CHK_Name_CreatedBy_Type CHECK ([Name], CreatedBy, [Type]) 

Merci d'avance !!

Répondre

7

Vous avez besoin d'une contrainte UNIQUE:

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

Ah-hah! Cela donne beaucoup plus de sens. Merci pour la réponse rapide! – BueKoW

Questions connexes