Изглежда отговорът ми е тук ...
Подобно на MySQL като цяло, в SQL оператор, който вмъква, изтрива или актуализира много редове, InnoDB проверява ограниченията УНИКАЛЕН и ВЪНШЕН КЛЮЧ ред по ред. Когато извършва проверки на външни ключове, InnoDB задава споделени заключвания на ниво ред на дъщерни или родителски записи, които трябва да разглежда. InnoDB проверява незабавно ограниченията на външния ключ; проверката не се отлага за извършване на транзакция. Съгласно стандарта SQL, поведението по подразбиране трябва да бъде отложено проверката. Това означава, че ограниченията се проверяват само след като целият SQL израз е обработен. Докато InnoDB не приложи отложена проверка на ограниченията, някои неща ще бъдат невъзможни, като например изтриване на запис, който препраща към себе си с помощта на външен ключ.
Обратно към чертожната дъска.