2016-04-01 110 views
3

我在創建Microsoft SQL Server中的表創建中包含條件約束時遇到問題。我似乎無法弄清楚。SQL Server中的條件約束

我試過case陳述,if then陳述,似乎沒有任何工作。

這是甚至可能的,因爲我不斷收到語法錯誤?

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

謝謝。

+0

什麼是錯誤您收到? – FallAndLearn

+0

剛剛刪除'when'並且用'AND'運算符替換'between' – Saif

+0

我得到的錯誤是:關鍵字'when'附近的語法錯誤。 –

回答

2

您需要在兩次檢查,因爲否則他們是矛盾的結合,然後只是簡單的布爾邏輯組合它們:

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

該解決方案非常簡潔並且工作完美。謝謝。 –