syamskoy
@syamskoy

Как завтавить автоинкремент проверять существование записи?

Мигрирую данные с MySQL на Postgresql - раньше с ним не работал, а нужда заставляет из-за наличия в нем мультиполигонов. Столкнулся с проблемой, что при вставке записи, автоинкремент просто увеличивает счетчик и пытается вставить запись. Поскольку в базу были мигрированны уже данные со своими старыми ID, то выскакивает ошибка при ставке новых значений, что такой ID уже существует. Вижу решение увеличить начальное значение счетчика на заведомо больший чем импортированные данные. Но это больше на костыль похоже, чем на решение. Можно ли как-то postgresql заставить работать с автоинкрементом как MySQL - там идет проверка, если ID такой уже в таблице есть, то он ищет следующий свободный.
  • Вопрос задан
  • 374 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Hedy
Как вариант убрать с поля ID sequence nextval и создать триггер на INSERT, который будет смотреть максимальное значение по полю ID (либо по вашей формуле) и создавать при вставке следующее нужное значение.

Ваш вариант увеличить начальное значение счетчика мне кажется вполне разумным, ничего страшного в этом нет:

ALTER SEQUENCE your_seq RESTART WITH %YOURVALUEHERE%
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы