在mysql表中实现外键

时间:2013-08-30 21:02:00

标签: mysql sql foreign-key-relationship

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

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

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

TableA
    id,
    name

TableB
   id,
   tableA_id,
   points

我删除了一些TableA行..现在我不能拥有那种关系。

任何mysql命令可以帮助,还是需要手动检查?

由于

1 个答案:

答案 0 :(得分: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 演示