2014-10-29 3 views
0

Есть ли в MySQL возможность каким-то образом нарушить нулевые ограничения внутри транзакции? У меня есть код в производстве, который, кажется, делает это, я не могу заставить его работать на моей машине разработки.Нарушение ограничения mysql в транзакции

Код написан на perl. Это то, что происходит схематически:

  1. Сделать INSERT, чтобы получить идентификатор, но не все ненулевые значения установлены.
  2. Сделайте инструкцию UPDATE, которая устанавливает все значения.
  3. Создайте данные в других таблицах (и, следовательно, ему нужен идентификатор, который он получает в 1).
  4. Зафиксируйте транзакцию (но я не нашел явную транзакцию начала).

На моей машине dev это не выполняется на шаге 1, потому что он жалуется на поля, не имеющие значений по умолчанию. У меня есть одна и та же MySQL-версия (5.1.66) на обеих машинах, но производство выполняется на Linux и локально Windows 7.

ответ

1

Операции с транзакциями atomicity нескольких действий, выполняемых в базе данных, а не на то, что вы можете нарушать ограничения при использовании.

Решение может быть insert, в котором вы не нарушаете ограничений, используя либо конечные значения, либо некоторые временные значения, которые вы переопределите позже, используя update во время выполнения вашей транзакции.

+0

Ok tnx. Теперь он решен. Что-то пошло на экспорт db, потому что он пропустил значение по умолчанию ... –

Смежные вопросы