我试图恢复一些旧的数据库表,当我构建它们时我没有使用外键。我有对应于外键的字段,但我没有在关系表中设置它连接到哪个表。
知道我有问题,因为如果我尝试添加该关系,它不能,因为在另一个表中删除了一些行。
是否有任何 mysql 命令用于检查这种类型的 NULL 关系,以便我删除我不需要的行.. 最后.. 添加关系。
表A ID, 姓名 表B ID, 表A_id, 积分
我已经删除了一些 TableA 行..现在我不能有这种关系。
有什么mysql命令可以帮忙,还是需要手动检查?
谢谢
我试图恢复一些旧的数据库表,当我构建它们时我没有使用外键。我有对应于外键的字段,但我没有在关系表中设置它连接到哪个表。
知道我有问题,因为如果我尝试添加该关系,它不能,因为在另一个表中删除了一些行。
是否有任何 mysql 命令用于检查这种类型的 NULL 关系,以便我删除我不需要的行.. 最后.. 添加关系。
表A ID, 姓名 表B ID, 表A_id, 积分
我已经删除了一些 TableA 行..现在我不能有这种关系。
有什么mysql命令可以帮忙,还是需要手动检查?
谢谢
假设您PRIMARY KEY
至少有限制,TableA.id
您可以尝试
-- Delete all orphaned records from TableB
DELETE b
FROM tableb b LEFT JOIN tablea a
ON b.a_id = a.id
WHERE a.id IS NULL;
-- Create a FK constraint
ALTER TABLE TableB
ADD CONSTRAINT fk_a_id FOREIGN KEY (a_id) REFERENCES tablea(id);
这是SQLFiddle演示