2012-02-28 14 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の規範の1つ)の後に宣言されていることを伝えることができますあなたはほぼそれを持っていた複合キーのために、あなたは間違っているとContraintを書いています。ここ

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

を実施例では、すでに今は複合主キー

は、テーブルの従業員は、プライマリキー(EMP_ID、EMP_NAME)を追加変更するには、このクエリを使用することができますテーブルを作成したとしています。

関連する問題