2015-10-18 35 views
0

我有2个表。无法在表中设置外键

login (login_id primary key 
Email varchar(254) not null 
Password varchar(20) not null) 

registration(
id PK 
Email 
password 
name 
... etc 

) 

余米试图设置登录为作为参考外键和注册(电子邮件)的电子邮件。 但我不能这样做 ALTER TABLE登录添加外键(电子邮件)参考注册(电子邮件);

我把它用于一个项目,这样我就以用户身份登录时匹配登录和注册电子邮件。 有人可以帮助

+1

你的意思是“不能做'改变表...'”什么?它会抛出一个错误吗?如果是这样,它说什么? – vesan

回答

1

2个表中的列定义必须匹配才能创建FK。

registration(id PK, Email VARCHAR(254) NOT NULL, password name 

两个表中的列的数据类型和长度必须匹配。

+0

这两列都是电子邮件 –

+0

VARCHAR(254)NOT NULL我的意思是,名称并不重要,但数据类型和长度都是 –

+0

即使它们是相同的 –

0

外键可以通过参考在另一个表的主键唯一密钥与一定的限制,例如柱类型和尺寸来创建。两列的类型和大小必须匹配。

有关事实的更详细的讨论,你可以参考这个SO发布mysql-non-primary-foreign-key这MySQL参考手册create-table-foreign-keys