2017-03-04 28 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):無法添加外鍵約束MySQL允許對我說:ERROR 1215(HY000):無法添加外鍵約束

我在diferents網頁中搜索,但我沒有找到解決方案。

謝謝!

回答

0

外鍵約束應該是主鍵。儘管你可以對唯一的甚至是非唯一的鍵(在MySQL中)有約束,但這通常是一個不好的習慣。

所以:

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; 

注意,名字不在account表。要獲得名稱,您需要JOINusers

+0

但我wana relacionate「名稱」coluumn。你的代碼有效,但我不明白爲什麼我的代碼不能工作...你能解釋我的原因嗎?謝啦兄弟! –

+0

@MiquelRosselloMelis。 。 。你*應該*想要與主鍵的關係,用'id'。主鍵是外國人使用的最佳列。您不能擁有對不是關鍵字的列的外鍵引用。 –

相關問題