Det ser ud til, at mit svar er her ...
Ligesom MySQL generelt, i en SQL-sætning, der indsætter, sletter eller opdaterer mange rækker, kontrollerer InnoDB UNIQUE og FOREIGN KEY-begrænsninger række for række. Når du udfører kontrol af fremmednøgler, sætter InnoDB delte rækkeniveaulåse på under- eller overordnede poster, den skal se på. InnoDB kontrollerer begrænsninger for fremmednøgle med det samme; checken udskydes ikke til transaktionsbekræftelse. Ifølge SQL-standarden skal standardadfærden udskydes kontrol. Det vil sige, at begrænsninger kun kontrolleres, efter at hele SQL-sætningen er blevet behandlet. Indtil InnoDB implementerer udskudt kontrol af begrænsninger, vil nogle ting være umulige, såsom at slette en post, der refererer til sig selv ved hjælp af en fremmednøgle.
Tilbage til tegnebrættet.