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;
我想从表帐户和表名用户的“名称”建立关系,但它给我这个错误:ERROR 1215(HY000):无法添加外键约束
我搜索了不同的页面,但我找不到解决方案。
谢谢!
答案 0 :(得分: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
表中。要获取名称,您需要JOIN
到users
。