2012-03-28 2 views
29

, поэтому я работаю над несколькими таблицами, и между ними существует некоторая несогласованность данных ... Одна или две таблицы имеют ограничение внешнего ключа для конкретной таблицы (назовите ее таблицей X) , но эта таблица имеет несколько строк с столбцом внешнего ключа.MySQL: удалите строку, игнорирующую ограничение внешнего ключа

Что я хочу сделать, это удалить дублированные строки в таблице X, но ограничение внешнего ключа мешает мне это сделать. Есть ли способ принудительно удалить строки, игнорируя ограничение внешнего ключа, поскольку я знаю, что я делаю?

+1

Имейте в виду, что вы можете испортить вашу БД при использовании SET foreign_key_checks = 0 Используйте его, только если вы точно знаете, каким будет результат. Я использую его только для своего сценария резервного копирования php. – DevWL

+0

Конечно, делать это будет опасно, и я буду использовать его только тогда, когда точно знаю, что я делаю. –

ответ

88

SET foreign_key_checks = 0

Это предотвратит MySQL от проверки внешних ключей. Не забудьте установить его на 1, когда вы закончите.

Кроме того, вы всегда можете отказаться от внешнего ключа, а затем добавить его позже, если вы хотите, чтобы влиять только сингулярным ключ

ALTER TABLE t DROP FOREIGN KEY fk

+0

Спасибо, что это удобно :) –

+2

Я думаю, вам не нужно устанавливать внешний ключ для проверки на 1, если вы немедленно выходите из сеанса. – dewd

+0

У меня есть несколько таблиц, поэтому я хочу удалить это поле из всей таблицы, так как я могу это сделать. это не сработает – karan