我有一个现有的MySQL数据库,它有很多表。
但问题是没有添加表之间的关系。如何在现有MySQL数据库中的表之间添加关系?
答案 0 :(得分:1)
类似这样的事情
ALTER TABLE `table1` ADD CONSTRAINT table1_id_refs FOREIGN KEY (`table2_id`) REFERENCES `table2` (`id`);
答案 1 :(得分:1)
其他人已经给出了如何在SQl代码中实现约束的答案。但最大的问题在于,既然你没有这个约束,你现在可能没有数据完整性。
首先,确定哪些记录不符合约束条件。接下来,您决定如何处理它们并修复它们,删除它们或您决定的任何内容。然后在数据清理后创建约束。
如果您已经有错误数据,有时您可以做的最好的事情是为“未知”添加父记录,并附加所有没有现有父记录的子记录。例如,如果这些是具有财务的实际订单附加到他们的价值,你不想删除(这会弄乱财务报告),然后你使用未知客户。
在某些情况下,您可以安全地删除字段或整个记录中的信息。假设您希望添加一个状态表的链接,并将地址表作为子表。假设它现在具有状态107并且你没有状态id为107.是否更好地拥有一个根本无法使用的地址(例如你不能邮寄到状态Unknown)从而删除记录或将状态字段留空(因为您的用户可以联系客户并填写它,并且您有一个您不想丢失的街道地址。
只有您可以决定您的特定应用以及如何处理当前不良记录的用途。既然你现在没有约束,那么你有不良记录的可能性非常高。
答案 2 :(得分:0)
From 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_option