我正在尝试为我的系统构建数据库和表。但我发现如果我不在代码中添加外键。没有错误。我已经使用了很多方法尝试使代码工作,但它仍然有错误。
Create table if not exists users_details_one
(
fname varchar(255),
lname varchar(255),
address varchar(255),
users_email varchar(255),
users_password varchar(255),
department varchar(255)
);
Create table if not exists users_one
(
users_email varchar(255),
users_password varchar(255) ,
FOREIGN KEY (users_email) REFERENCES users_details_one(users_email),
FOREIGN KEY (users_password) REFERENCES users_details_one(users_password)
);
答案 0 :(得分:1)
外键中有拼写错误:
FOREIGN KEY (users_password) REFERENCES users_details_one(users_spassword)
应为FOREIGN KEY (users_password) REFERENCES users_details_one(users_password)
并且您还需要表users_email
中的users_password
和users_details_one
上的索引,例如:
Create table if not exists users_details_one
(
fname varchar(255),
lname varchar(255),
address varchar(255),
users_email varchar(255),
users_password varchar(255),
department varchar(255),
index (users_email),
index (users_password)
);
Create table if not exists users_one
(
users_email varchar(255),
users_password varchar(255) ,
FOREIGN KEY (users_email) REFERENCES users_details_one(users_email),
FOREIGN KEY (users_password) REFERENCES users_details_one(users_password)
);
索引不必是唯一的。
MySQL要求外键和引用键上的索引 外键检查可以很快,不需要表扫描。在里面 引用表时,必须有一个索引所在的外键 列以相同顺序列为第一列。这样的 如果不是,则会自动在引用表上创建索引 存在。
答案 1 :(得分:0)
如果要将列作为外键,那些列必须是主键,必须具有唯一性约束,即在您的情况下users_details_one的users_email和users_password必须是唯一键或主键。