2016-04-01 7 views
3

Ich habe ein Problem beim Erstellen einer bedingten Einschränkung in der Tabellenerstellung in Microsoft SQL Server enthalten. Ich kann es einfach nicht herausfinden.Bedingte Einschränkung in SQL Server

Ich habe versucht case Aussagen, if then Aussagen, nichts scheint zu funktionieren.

Ist das überhaupt möglich, weil ich immer einen Syntaxfehler bekomme?

CREATE TABLE SECTION 
(
    c# int FOREIGN KEY REFERENCES Course(c#), 
    se# int, 
    emp# int FOREIGN KEY REFERENCES Professor(EMP#), 
    class_time time, 
    controlNumber int DEFAULT 20, 
    CONSTRAINT pk_SectionID PRIMARY KEY (c#, se#), 
    CONSTRAINT chk_controlNumber CHECK (controlNumber >= 40 AND controlNumber <=60), 

    CONSTRAINT chk_c# CHECK (when c# between 3000 and 5000 then controlNumber <=40) 
); 

Vielen Dank.

+0

Was ist der Fehler, den Sie bekommen? – FallAndLearn

+0

entfernen Sie einfach "wenn" und ersetzen "zwischen" durch "UND" -Operator – Saif

+0

der Fehler, den ich bekam, war: Falsche Syntax in der Nähe des Schlüsselwortes "wenn". –

Antwort

2

Sie benötigen zwei Schecks zu kombinieren, da sonst sind sie widersprüchlich, und dann kombinieren sie nur mit einfachen Booleschen Logik:

CREATE TABLE SECTION(
    c# int FOREIGN KEY REFERENCES Course(c#), 
    se# int, 
    emp# int FOREIGN KEY REFERENCES Professor(EMP#), 
    class_time time, 
    controlNumber int DEFAULT 20, 
    CONSTRAINT pk_SectionID PRIMARY KEY (c#, se#), 
    CONSTRAINT chk_controlNumber CHECK (
     controlNumber between 40 AND 60 and (c# < 3000 or c# > 5000) or 
     (c# between 3000 and 5000 and controlNumber <= 40)) 
); 
+0

Diese Lösung ist sehr prägnant und funktioniert perfekt. Vielen Dank. –