2016-07-25 20 views
-1

我有一個名爲project表。SQL語法:我想限制colmn值到一個特定的列表

在該表格中名爲project_statu的列。

所以我想要做的是限制該列到一個特定的列表,(

  • '完成',
  • '正在進行'
  • '未完成'

)。

我試了一下,但沒有奏效:

update table project check project_statut in ('finished','not finished','in progress'); 
+0

是否有任何其他表將加入您的項目表? – Pirate

+0

請使用標點符號;你的問題是一個單獨的句子,很難閱讀。 – HoneyBadger

+0

MySQL有枚舉和設置類型 - 它們可以用來做你想做的事情 - 但它們有它們自己的缺點。你可以用允許的值創建第二個鏈接表。 – PaulF

回答

0

你必須創建使用Check約束

CREATE TABLE Project 
(
P_Id number, 
project_status varchar(50) NOT NULL, 
CONSTRAINT chk_st CHECK (project_status='finished' or project_status= 'in progress' or project_status='not finished') 
) 

更新

如需更多幫助,你的表,請訪問W3schools

希望它會有所幫助。

+0

不幸的是,MySQL不支持SQL檢查約束。您可以在DDL查詢中將它們定義爲兼容性原因,但它們只是被忽略。 – 1000111

+0

然後您可以爲此創建觸發器。 – Pirate

+0

是的。你需要爲此採用'trigger' – 1000111

0

在MySQL中有兩種簡單的方法。首先是創建一個ProjectStatuses表和外鍵約束:

create table ProjectStatuses (ProjectStatus varchar(255)); 

insert into ProjectStatuses(ProjectStatus) 
    values ('finished'), ('in progress'), ('not finished'); 

然後使用一個外鍵約束:

alter table project 
    add constraint fk_project_projectstatuses 
     foreign key project_status references ProjectStatuses(ProjectStatus); 

另一種方法是MySQL是使用enum類型。你可以閱讀關於here

相關問題