сохранения в таблицу, что сиквенс у таблицы стал меньше, чем самый большой айдишник в таблице( много запросов слали видимо, в айдишниках разрывы). Теперь новые записи в таблицу не вставляются. Есть ли А) какой нибудь способ избежать неверного выставления сиквенса для таблицы в базе Б) сказать таблице при инсерте выставлять айдишник как максимальный +1, а не из неверного сиквенса? В целом любые идеи welcome, а то ничего не гуглится( спасибо!
А что мешает обновить последовательность значением max+1 из таблицы?
Можно перелистнуть сиквенс просто. Установив ему max(id) + 1 следующим значением.
предварительно залочив таблицу
а чем плох тип bigserial ?:)
Если у вас на проде можно как-то исхитриться и вставить произвольный айдишник в таблицу в обход сиквенса, то у вас, однако, баг. К тому же такой, который может привести к Denial of Service
Айдишник в коде нигде не выставляется. Insert обычный без айдишника. Может конечно entity framework подгадила где-то, но маловероятно
Кстати, таки появилась мысль - возможно, всё-таки кто-то вставил именно руками id больше текущего в последовательности, что позже дало конфликт. Если используется Entity (технология MS) и есть опыт тяжёлого наследия MS SQL, то тестеры могли проколоться и не заметить, что творят фигню. В MS не вставить значение в поле identity без SET IDENTITY_INSERT ON - будет ругань. В postgresql - запросто. Что нe отменяет вопрос, как тестеры попали в прод.
Не. Тестеры тупо ui тестируют
Ну, тогда из разряда загадок.
Обсуждают сегодня