我试图恢复一些旧的数据库表,当我构建它们时,我没有使用外键。我有与外键对应的字段,但我没有在它所连接的表的关系表中进行设置。
知道我有问题,因为如果我尝试添加该关系,则不能,因为在另一个表中删除了一些行。
是否有任何mysql命令用于检查此类型NULL关系,以便删除我不需要的行...最后..添加关系。
TableA id, name TableB id, tableA_id, points
我删除了一些TableA行..现在我不能拥有那种关系。
任何mysql命令可以帮助,还是需要手动检查?
由于
答案 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 演示