【问题标题】:Cannot set foreign key in the table无法在表中设置外键
【发布时间】:2015-10-18 18:09:43
【问题描述】:

我有 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 login ADD FOREIGN KEY(email) REFERENCES registraion(email);

我将它用于一个项目,以便在以用户身份登录时匹配登录和注册电子邮件。 有人可以帮忙吗

【问题讨论】:

  • “不能做alter table...”是什么意思?它会抛出错误吗?如果是这样,它说明了什么?

标签: mysql asp.net


【解决方案1】:

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

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

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

【讨论】:

  • 这两列都是电子邮件
  • VARCHAR(254) NOT NULL 我的意思是,名称至少无关紧要,但数据类型和长度却很重要
  • 即使是一样的
  • 好吧,它们在您的代码中并不相同,所以它有什么用处,如果您想对您的问题有好的答案,请包括您实际使用的代码。我们不是你知道的小读者。所以请发布您的完整表格创建语句。
【解决方案2】:

外键可以通过引用另一个表上的主键或具有特定限制(例如列类型和大小)的唯一键来创建。两列的类型和大小必须匹配。

有关事实的更详细讨论,您可以参考此 SO 帖子 mysql-non-primary-foreign-key 和此 MySql 参考手册 create-table-foreign-keys

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-08
    • 2012-06-25
    • 2019-02-16
    • 2021-06-13
    • 1970-01-01
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多