0

我试图恢复一些旧的数据库表,当我构建它们时我没有使用外键。我有对应于外键的字段,但我没有在关系表中设置它连接到哪个表。

知道我有问题,因为如果我尝试添加该关系,它不能,因为在另一个表中删除了一些行。

是否有任何 mysql 命令用于检查这种类型的 NULL 关系,以便我删除我不需要的行.. 最后.. 添加关系。

表A
    ID,
    姓名

表B
   ID,
   表A_id,
   积分

我已经删除了一些 TableA 行..现在我不能有这种关系。

有什么mysql命令可以帮忙,还是需要手动检查?

谢谢

4

1 回答 1

1

假设您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演示

于 2013-08-30T21:49:37.987 回答