【问题标题】:How to add a foreign key in an existing table?如何在现有表中添加外键?
【发布时间】:2011-08-05 05:39:39
【问题描述】:

我有三张桌子:

1.用户(id、姓名、生日)-主键('id')

2。联系人(id、联系人、已验证)-主键('id')

3. UserContact (User_id, Contact_id) - 没有主键或外键

问题是我在创建 UserContact 表时不关心主键或外键。因此,在 zend 框架的 UserContact 表中插入记录时出现以下错误。

表必须有主键,但没有找到

现在我想创建一个 MySql 脚本来更改 UserContact 表,并将 User_idContact_id 作为 User 和 Contact 表的外键。如何编写这个脚本。我正在使用 phpMyAdmin。

谢谢

【问题讨论】:

  • 如果我没记错的话,你只需要在 zend 框架中用受保护的 $_primary = 'id';//主键声明它,在 mysql 中声明它只会增加查询速度

标签: php mysql zend-framework alter-table


【解决方案1】:

ALTER TABLE Syntax

添加外键 -

ALTER TABLE UserContact
  ADD CONSTRAINT FK_UserContact_User FOREIGN KEY (user_id) REFERENCES user(id);
ALTER TABLE UserContact
  ADD CONSTRAINT FK_UserContact_Contact FOREIGN KEY (contact_id) REFERENCES user(id);

添加主键-

ALTER TABLE UserContact
  ADD PRIMARY KEY (User_id, Contact_id);

【讨论】:

  • 也许值得一提的是只有 InnoDB 支持它们。 MySQL 是创建索引来支持 FK,还是必须手动创建?
  • 是的,只有 InnoDb 表支持外键。 FK创建后会自动创建索引。
猜你喜欢
  • 2013-07-13
  • 2010-12-25
  • 1970-01-01
  • 2012-04-19
  • 2014-02-20
  • 1970-01-01
  • 2014-01-15
  • 1970-01-01
  • 2015-02-17
相关资源
最近更新 更多