У меня есть таблица MySQL, определение которой таково:
CREATE TABLE `guestbook` ( `Id` int(10) unsigned NOT NULL, `ThreadId` int(10) unsigned NOT NULL, PRIMARY KEY (`Id`), KEY `ThreadId` (`ThreadId`), CONSTRAINT `guestbook_ibfk_1` FOREIGN KEY (`ThreadId`) REFERENCES `guestbook` (`Id`) ) ENGINE=InnoDB;
и в настоящее время в таблице только 1 строка:
mysql> select * from guestbook; +-----+----------+ | Id | ThreadId | +-----+----------+ | 211 | 211 | +-----+----------+
Проблема заключается в том, что нет возможности удалить эту строку без нарушения ограничения.
mysql> delete from guestBook; ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`polaris`.`guestbook`, CONSTRAINT `guestbook_ibfk_1` FOREIGN KEY (`ThreadId`) REFERENCES `guestbook` (`Id`))
Поскольку столбец ThreadId был определен не null, также невозможно временно установить ThreadId на другое значение для удаления строки. Есть ли способ удалить строку без изменения определения таблицы или удаления всей таблицы?