Удаление строки с самореференционным внешним ключом

У меня есть таблица 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 был определен не равным нулю, также невозможно временно установить для ThreadId другое значение, чтобы удалить строку. Есть ли способ удалить строку без изменения определения таблицы или удаления всей таблицы?

16
задан ROMANIA_engineer 23 June 2017 в 15:24
поделиться