2017-03-04 32 views
0
CREATE TABLE users (
    id INT(8) AUTO_INCREMENT, 
    name VARCHAR(20) NOT NULL, 
    second_name VARCHAR(30) NOT NULL, 
    username VARCHAR(8) NOT NULL, 
    password VARCHAR(12) NOT NULL, 
    administrator BOOLEAN default false, 
    PRIMARY KEY (id) 
)ENGINE=InnoDB; 

CREATE TABLE account(
    account_number INT(8) NOT NULL, 
    name VARCHAR(20) NOT NULL, 
    second_name VARCHAR(30) NOT NULL, 
    username VARCHAR(8) NOT NULL, 
    account_type INT(5) NOT NULL, 
    PRIMARY KEY (account_number), 
    CONSTRAINT FOREIGN KEY(name) REFERENCES users(name) 
)ENGINE=InnoDB; 

テーブルアカウントの「名前」とテーブルユーザーの「名前」の関係を作成したいと思いますが、このエラーが表示されます:エラー1215(HY000):外部キー制約を追加できませんエラー1215(HY000):外部キー制約を追加できません

私は別のページで検索しましたが、解決策が見つかりませんでした。

ありがとうございます!

答えて

0

外部キーの制約は、主にプライマリキーにする必要があります。一意でないキー(MySQLでは)でさえ制約を受けることはできますが、それは一般的に悪い習慣です。だから、

:名前がaccountテーブルに存在しないことを

CREATE TABLE account (
    account_number INT(8) NOT NULL, 
    user_id int NOT NULL, 
    second_name VARCHAR(30) NOT NULL, 
    username VARCHAR(8) NOT NULL, 
    account_type INT(5) NOT NULL, 
    PRIMARY KEY (account_number), 
    CONSTRAINT FOREIGN KEY (user_id) REFERENCES users(id) 
)ENGINE=InnoDB; 

注意。名前を取得するには、JOINusersが必要です。

+0

しかし、わたしは「名前」列をrelacionateします。あなたのコードは動作しますが、なぜ私のコードが動作しないのか理解できません...理由を説明できますか?仲間ありがとう! –

+0

@MiquelRosselloMelis。 。 。あなたは主キーとの関係を 'id'で欲しいと思います。プライマリキーは、外国のeysに使用するのに最適な列です。キーではない列への外部キー参照を持つことはできません。 –

関連する問題