2013-08-30 3 views
0

Im пытается восстановить некоторые старые таблицы базы данных, что, когда я их создаю, я не пользовался внешними ключами пользователя. У меня есть поле, которое соответствует внешнему ключу, но я не установил его в таблице отношений, к которой он подключен.Внедрение внешнего ключа в таблице mysql

Правильно знаю, что у меня проблема, потому что, если я пытаюсь добавить это отношение, он не может, потому что в другой таблице удалены некоторые строки.

Есть ли какая-нибудь команда mysql для проверки этого типа отношения NULL для меня, чтобы удалить строки, которые мне не нужны .. и в конце .. добавьте отношение.

 
TableA 
    id, 
    name 

TableB 
    id, 
    tableA_id, 
    points 

Я удалил несколько строк таблицы A. Теперь я не мог иметь это отношение.

Любая команда mysql, чтобы помочь или нужно проверить вручную?

Благодаря

ответ

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 демо

Смежные вопросы