Как удалить записи из таблицы MySQL, но пропустить записи, которые имеют ошибки ограничения? - PullRequest
0 голосов
/ 23 августа 2011

Я пытаюсь удалить записи, но получаю сообщение об ошибке ограничения и запрос останавливается. Или я использую «delete ignore ...», но запрос также останавливается, только с предупреждением. Я не могу отключить проверку ограничений, мне просто нужно удалить записи без ограничений. Может быть, у mysql есть какие-то команды для этого? Я ничего не нашел.

Ответы [ 2 ]

3 голосов
/ 23 августа 2011

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

DELETE FROM table1 t
INNER JOIN 
(
   SELECT pk_column FROM table1 t1
   LEFT JOIN details1 d1 ON (d1.fk_column = t1.pk_column)
   // other LEFT JOIN[s] if you have more detail tables.
   WHERE d1.pk_column IS NULL
)a ON t.pk_column = a.pk_column

Альтернатива присоединению, которая работает примерно так же, состоит в добавлении WHERE NOT EXIST для проверки

0 голосов
/ 23 августа 2011

Добавить "при удалении каскада" в определение таблицы / ограничения.

...