Обработка ошибки insert
При ошибке вставки записи Primary key таблицы все равно увеличивается - выглядит как глупая растрата. Почему так происходит? Есть ли настройки для этого? Думаю, уменьшение ручками этого id не лучшее решение. Заранее спасибо!
Ответы (1 шт):
То что Вы описываете является стандартным поведением всех SQL баз данных. Перед выполнением вставки увеличивается значение авто инкремента и только затем выполняется вставка. Это нужно для того что бы зарезервированное значение не могло быть использовано другой транзакцией. При ошибке значение авто инкремента не уменьшается.
В большинстве случаев это не критично и никакого ручного уменьшения делать нельзя.
В случае высоконагруженных таблиц имеет смысл проверять значение перед вставкой или истользовать другие виды первичного ключа (например UUID)