Обработка ошибки insert

При ошибке вставки записи Primary key таблицы все равно увеличивается - выглядит как глупая растрата. Почему так происходит? Есть ли настройки для этого? Думаю, уменьшение ручками этого id не лучшее решение. Заранее спасибо!


Ответы (1 шт):

Автор решения: Slava Rozhnev

То что Вы описываете является стандартным поведением всех SQL баз данных. Перед выполнением вставки увеличивается значение авто инкремента и только затем выполняется вставка. Это нужно для того что бы зарезервированное значение не могло быть использовано другой транзакцией. При ошибке значение авто инкремента не уменьшается.

В большинстве случаев это не критично и никакого ручного уменьшения делать нельзя.

В случае высоконагруженных таблиц имеет смысл проверять значение перед вставкой или истользовать другие виды первичного ключа (например UUID)

→ Ссылка