2015-07-19 50 views
3

我想添加一個檢查約束例如如何創建MySQL工作臺CHECK約束

ALTER TABLE fruit 
ADD CONSTRAINT check_colour CHECK(color IN ('black','white', 'green')) 

我能做到這一點,在命令行,但是,我找不到添加複選項約束在Mysql Workbench中。我只能找到觸發器,但不能檢查約束。

回答

2

MySQL允許使用check constraint的語法,但對此不做任何處理。因此,沒有檢查。

標準答案是使用觸發器來檢查值。在你的情況,不過,我想你應該有一個Colors表和外鍵約束:

create table Colours (
    ColourId int not null auto_increment primary key, 
    Colour varchar(255) 
); 

ALTER TABLE fruits 
    ADD COLUMN ColourId FOREIGN KEY (ColourID) REFERENCES Colours(ColourId); 

這將確保只有合法的顏色是允許的。如果您在創建表格時執行此操作,則可以添加NOT NULL

+0

爲什麼觸發器?你不能在這種情況下使用枚舉嗎? –

+0

觸發器,因爲OP提到了檢查約束,這是實現該約束的唯一方法。另一種實現是使用枚舉。 –