Я думаю, вы спрашиваете: «Какие ошибки могут вызывать операторы INSERT, которые сделают откат MySQL транзакцией?»
ВСТАВКА, которая нарушает любое ограничение, вызовет откат. Это может быть ограничение внешнего ключа, как вы обрисовали, но это также может быть ограничение UNIQUE или CHECK. (Ограничение CHECK, вероятно, будет реализовано как триггер в MySQL.)
Попытка вставить недопустимые значения (NULL в ненулевые столбцы, числа вне диапазона, недопустимые даты) может привести к откату. Но они не могут, в зависимости от конфигурации сервера. (См. Ссылку ниже.)
INSERT также может потерпеть неудачу из-за отсутствия разрешений. Это также вызовет откат.
Некоторые условия, которые могут вызвать откат на других платформах, не вызывают откат на MySQL.
В настройках MySQL есть ошибки
происходит, чтобы остановить утверждение в
середина или восстановить, а также
возможно из проблемы и
Продолжить. По умолчанию сервер
следует за последним курсом. Это означает,
например, что сервер может
принуждать незаконные ценности к ближайшему
допустимые значения.
Эта цитата взята из Как MySQL справляется с ограничениями .
Одна из моих любимых цитат из документации MySQL, 1.8.6.2. Ограничения на неверные данные .
MySQL позволяет хранить определенные
неверные значения даты в DATE и
Столбцы DATETIME (например, 2000-02-31)
или «2000-02-00»). Идея в том, что это
это не работа сервера SQL для
проверить даты.
Разве это не мило ?