首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在已有的MySQL数据库中添加表之间的关系?

问如何在已有的MySQL数据库中添加表之间的关系?
EN

Stack Overflow用户
提问于 2011-09-07 02:04:43
回答 3查看 7K关注 0票数 1

我有一个现有的MySQL数据库,其中有大量的表。

但问题是没有添加表之间的关系。如何在现有的MySQL数据库中添加表之间的关系?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-07 02:09:13

像这样的东西

代码语言:javascript
复制
ALTER TABLE `table1` ADD CONSTRAINT table1_id_refs FOREIGN KEY (`table2_id`) REFERENCES `table2` (`id`);
票数 2
EN

Stack Overflow用户

发布于 2011-09-07 02:57:20

关于如何在SQl代码中实现约束,其他人已经给出了答案。但最大的问题在于,由于你没有这个约束,你现在可能没有数据完整性。

首先,确定哪些记录不满足约束条件。接下来,您决定如何处理它们,并对其进行修复、删除或其他任何操作。一旦清除了数据,您就可以创建约束。

如果你已经有了坏的数据,有时你能做的最好的就是为“未知”添加一个父记录,并附加所有没有现有父记录的子记录。例如,如果这些是附加了财务价值的实际订单,你不会想删除它们(这会弄乱财务报告),然后你就会使用未知客户。

在其他情况下,您可能可以安全地删除字段或整个记录中的信息。假设您想要添加一个到状态表的链接,并将地址表作为子表。假设现在它的状态是107,而你的状态id不是107。最好是有一个根本不能使用的地址(例如,您不能邮寄到状态未知),从而删除记录或将状态字段留空(因为您的用户可以联系客户并填写它,而您有一个不想丢失的街道地址。

只有你才能决定你的特定应用程序,以及它用于如何处理当前坏记录。因为你现在没有约束,所以你有坏记录的可能性非常高。

票数 1
EN

Stack Overflow用户

发布于 2011-09-07 02:08:10

在the docs中,将外键约束添加到现有表的语法为

代码语言:javascript
复制
ALTER TABLE tbl_name
    ADD [CONSTRAINT [symbol]] FOREIGN KEY
    [index_name] (index_col_name, ...)
    REFERENCES tbl_name (index_col_name,...)
    [ON DELETE reference_option]
    [ON UPDATE reference_option
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7324183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档