2012-02-28 91 views
2

我是MySQL WB新手,所以我可以通過在依賴表之間添加關係來創建外鍵。如何創建組合鍵?

但是如何創建一個組合鍵? 例如,我有這個表的SQL

CREATE TABLE TASKS 
(
TEST_ID NUMBER(6) CONSTRAINT FK_TASKS_TESTS REFERENCES TESTS(TEST_ID), 
TASK_ID NUMBER(3), 
MAX_POINTS NUMBER, 
CONSTRAINT PK_TASKS PRIMARY KEY (TEST_ID, TASK_ID) 
); 

是否有這個選項,或者它應該否則產生的?

回答

2

問題歸結爲唯一性。如果您知道TASK_ID將是唯一的,那麼將單個列作爲主鍵會更好。 MySQL允許使用多列主鍵,但是如果TASK_ID是唯一的,只需在主鍵上添加一個TEST_ID上的另一個索引即可。主鍵的語法爲:

CREATE TABLE TASKS 
(
TEST_ID NUMBER(6), 
TASK_ID NUMBER(3), 
MAX_POINTS NUMBER, 
PRIMARY_KEY(TASK_ID) -- OR PRIMARY_KEY(TASK_ID, TEST_ID) for the composite key 
); 

請參閱this discussion瞭解更多信息。

3

首先,外鍵約束,我不認爲它應該放在那裏。據我可以告訴所有的約束聲明後變量聲明(這是一般的SQL的規範之一) 您幾乎擁有它的複合關鍵,你只是一件錯事,那就是寫Contrament。這裏是工作

CREATE TABLE IF NOT EXISTS TASK (
    TEST_ID NUMBER(6) , 
    TASK_ID NUMBER(3) , 
    MAX_POINTS NUMBER , 
    PRIMARY KEY (TEST_ID,TASK_ID), 

    CONSTRAINT fk_1 FOREIGN KEY (`TEST_ID`) REFERENCES TEST (TEST_ID) 
) 
0

假設你已經創建了一個表,現在你可以使用這個查詢,使複合主鍵

ALTER TABLE員工添加主鍵(EMP_ID,EMP_NAME)的例子;