2013-04-30 2 views
0

Как пустая таблица может бросить «Ограничение внешнего ключа не удается»? У меня есть две таблицы: «listini» и «listinoprezzi», вторая - внешняя ссылка на первую. Однако «listinoprezzi» пусто, и когда я пытаюсь усечь «listini» я получаю:Mysql innodb ссылка целостность с пустой tablr

#1701 - Cannot truncate a table referenced in a foreign key constraint (`listiniprezzi`, CONSTRAINT `listiniprezzi_ibfk_4` FOREIGN KEY (`listino`) REFERENCES `listini` (`id`)) 

Как это возможно?

ответ

0

Как указано под TRUNCATE TABLE Syntax (подчеркивание добавлено):

Для достижения высокой производительности, она обходит метод DML удаления данных. Таким образом, он не может быть откат, он не вызывает триггеры ON DELETE, а не может быть выполнен для таблиц InnoDB с отношениями внешнего ключа родитель-ребенок.

Хотя TRUNCATE TABLE похож на DELETE, он классифицируется как оператор DDL, а не оператор DML. Она отличается от DELETE следующих способов в MySQL 5.5:

[ deletia ]

  • TRUNCATE TABLE терпит неудачу за InnoDB таблиц, если имеется какое-либо ограничение FOREIGN KEY из других таблиц, которые ссылаются на таблицу. Допускаются ограничения внешнего ключа между столбцами одной таблицы.
+0

Вы можете: сначала удалить ограничение внешнего ключа, а затем 'TRUNCATE'; или просто используйте 'DELETE'. – eggyal

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

  • Нет связанных вопросов^_^