Какие ошибки существуют в SQL-запросах для ROLLBACK? - PullRequest
0 голосов
/ 07 января 2011

Например:

insert into table( a, b ) values ('a','b') could generate the following error:

**a-b duplicate entry**

НО здесь я могу игнорировать эту ошибку при выборе идентификатора этих значений, а затем использовать этот идентификатор:

select ID from table where a = 'a' and b = 'b'
insert into brother( table ) values (ID)

Наконец, я МОГУТ ЗАВЕРШИТЬ ПРОЦЕДУРУ.Посмотрите, что эта ошибка не относится к откату, если мне нужен идентификатор.

Вопрос в том, какие ошибки будут делать меня, чтобы ОТКЛЮЧИТЬ ПРОЦЕДУРУ ???

Надеюсь, вы понимаете.

1 Ответ

0 голосов
/ 26 января 2011

Я думаю, вы спрашиваете: «Какие ошибки могут вызывать операторы 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 для проверить даты.

Разве это не мило ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...