Context
С одной стороны, у меня есть модель данных PostgreSQL с таблицей, в которой одно поле ID
определено как serial ( который опирается на последовательность ).
С другой стороны, у меня сначала были некоторые данные, которые имеют свои собственные уникальные идентификаторы, но которые не начинались с 1, например: 1001, 1002, 1003, 1004, 1005
.
Мне нужно вставить эти данные в мою таблицу, сохранив их оригинальные идентификаторы.
То, что я уже сделал
До сих пор я перезагружал последовательность до вставки, например, с использованием;
ALTER SEQUENCE serial RESTART WITH 1000;
INSET INTO my_table (id, name, type)
VALUES (1001, 'AIE', 'TC'),
VALUES (1002, 'AIF', 'TC'),
VALUES (1003, 'AII', 'TE'),
VALUES (1004, 'AIH', 'TA'),
VALUES (1005, 'AIG', 'TB'),
, которая прекрасно работает, ... пока я не встретил данные с непоследовательными идентификаторами; 2001, 2005, 2018, 2019, 2020
или 120,130,133,137,160
.
В этом случае этот трюк больше не работает;
Например:
ALTER SEQUENCE serial RESTART WITH 2000;
INSET INTO my_table (id, name, type)
VALUES (2001, 'AIL', 'TA'),
VALUES (2005, 'AIM', 'TC'),
VALUES (2018, 'AIP', 'TB'),
VALUES (2019, 'AIO', 'TC'),
VALUES (2020, 'AIN', 'TD'),
Идентификаторы в my_table являются последовательными после этого; 2001, 2002, 2003, 2004, 2005
, таким образом, они не соответствуют их первоначальному значению в данных.
Вопрос
Как я могу обойти / отключить режим автоматического увеличения серийного номера ID
поле моей таблицы, чтобы я мог сохранить идентификаторы из своих данных при вставке их в эту таблицу?
Я не могу ни изменить типы данных модели данных, ни добавить таблицы.
Среда
PostgreSQL версия 9.5 и выше.
Независимо от ОС (Linux или Window).