我有一个现有的MySQL数据库,其中有大量的表。
但问题是没有添加表之间的关系。如何在现有的MySQL数据库中添加表之间的关系?
发布于 2011-09-07 02:09:13
像这样的东西
ALTER TABLE `table1` ADD CONSTRAINT table1_id_refs FOREIGN KEY (`table2_id`) REFERENCES `table2` (`id`);发布于 2011-09-07 02:57:20
关于如何在SQl代码中实现约束,其他人已经给出了答案。但最大的问题在于,由于你没有这个约束,你现在可能没有数据完整性。
首先,确定哪些记录不满足约束条件。接下来,您决定如何处理它们,并对其进行修复、删除或其他任何操作。一旦清除了数据,您就可以创建约束。
如果你已经有了坏的数据,有时你能做的最好的就是为“未知”添加一个父记录,并附加所有没有现有父记录的子记录。例如,如果这些是附加了财务价值的实际订单,你不会想删除它们(这会弄乱财务报告),然后你就会使用未知客户。
在其他情况下,您可能可以安全地删除字段或整个记录中的信息。假设您想要添加一个到状态表的链接,并将地址表作为子表。假设现在它的状态是107,而你的状态id不是107。最好是有一个根本不能使用的地址(例如,您不能邮寄到状态未知),从而删除记录或将状态字段留空(因为您的用户可以联系客户并填写它,而您有一个不想丢失的街道地址。
只有你才能决定你的特定应用程序,以及它用于如何处理当前坏记录。因为你现在没有约束,所以你有坏记录的可能性非常高。
发布于 2011-09-07 02:08:10
在the docs中,将外键约束添加到现有表的语法为
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_optionhttps://stackoverflow.com/questions/7324183
复制相似问题