2015-11-14 97 views
-2

我對SQL很新,但是我正在創建表。約束檢查必須是其中一個或另一個

我需要確保列TypeAvailableUnavailable只能輸入。我不知道如果CHECK約束是正確的:

CONSTRAINT Delivery Driver Type, 
CHECK (Delivery Driver Type in Available, Unavailable) 

或者,如果有使用任何其他Oracle代碼?感謝您的幫助!

回答

0

您可以使用:

ALTER TABLE tab_name 
ADD CONSTRAINT Cnt_Delivery_Driver_Type 
CHECK (Delivery_Driver_Type IN ('Available', 'Unavailable')); 

SqlFiddleDemo

你的表名不能包含空格,因爲它是不好的做法。如果你需要空格引用它們反斜槓MariaDB/MySQL,方括號SQL Server," Oracle。

+0

謝謝,但 - 我仍然在做我的學位和數據庫是我的第一個主題,但這真的有幫助,雖然謝謝! – Zee

+1

實際上'''是標準定義引用標識符的東西,它不是特定於Oracle的,標準引用可以在其他DBMS中使用,如果配置正確 –

1

如果您認爲未來可能需要超過delivery_driver_type的兩個值,則應該考慮使用查找表,而使用外鍵約束連接兩個表。

+0

非常感謝! – Zee

相關問題