Ответ 1
Выберите максимальное значение столбца gid (max_gid):
SELECT max(gid) FROM test_table;
И используйте его как начальную точку для последовательности (возможно, max_gid + 1):
ALTER SEQUENCE test_table_gid_seq RESTART WITH max_gid;
У меня есть таблица с столбцом первичного ключа "gid", а ее тип - "Integer NOT NULL". Я хочу преобразовать его в "Serial NOT NULL", чтобы я мог вставить некоторые значения в эту таблицу. Я использовал следующие команды для преобразования его в серийный:
CREATE SEQUENCE test_table_gid_seq
INCREMENT 1
MINVALUE 1
MAXVALUE 2147483648 START 1
CACHE 1;
ALTER TABLE test_table ALTER COLUMN gid
SET DEFAULT nextval('test_table_gid_seq'::regclass);
Эта команда преобразует целое число в последовательный. Но когда я ввел некоторые данные в таблицу, произошла ошибка:
ОШИБКА: дублирующее значение ключа нарушает уникальное ограничение "pk_test".
Пожалуйста, помогите мне решить эту проблему. Есть ли какой-либо другой способ преобразования целого в последовательный?
Выберите максимальное значение столбца gid (max_gid):
SELECT max(gid) FROM test_table;
И используйте его как начальную точку для последовательности (возможно, max_gid + 1):
ALTER SEQUENCE test_table_gid_seq RESTART WITH max_gid;