Я существующий Postgres таблицу, например:Запрашиваемая Postgres добавить несуществующий значение последовательности
CREATE TABLE profiles(
profile_id SERIAL PRIMARY KEY,
num_feed integer,
num_email integer,
name text
);
ALTER TABLE ONLY profiles ALTER COLUMN profile_id SET DEFAULT nextval('profiles_profile_id_seq'::regclass);
ALTER TABLE ONLY profiles ADD CONSTRAINT profiles_pkey PRIMARY KEY (profile_id);
CREATE INDEX "pi.profile_id" ON profiles USING btree (profile_id);
И это существующие данные, которые я не могу изменить, я могу только добавить новый из них.
INSERT INTO profiles VALUES
(3, 2, 5, 'Adam Smith'),
(26, 2, 1, 'Fran Morrow'),
(30, 2, 2, 'John Doe'),
(32, 4, 1, 'Jerry Maguire'),
(36, 1, 1, 'Donald Logue');
Проблема заключается в том, когда я попытался вставить новые данные, Postgres добавит минимальное значение (что хорошо) на колонку «profile_id» но не удался/ошибкой, когда она попадет в действующее значение, так как это значение существует.
ERROR: duplicate key value violates unique constraint "profile_id"
DETAIL: Key (profile_id)=(3) already exists.
Можно ли спросить Postgres, чтобы добавить следующее несуществующее значение?
Для моего случая, что, если я не могу изменить существующий profile_id. Я могу добавить еще одно. Извините, если это не очень понятно с самого начала. Я уже редактирую свой вопрос. – SianiparD
Какая строка дает вам ошибку? Эта вставка вы показываете сразу после создания таблицы? или намного позже? Как я объясню, вы можете использовать 'ALTER SEQUENCE', поэтому следующее число:'> max (current_id) ' –
Вы также можете попробовать [CURVAL()] (http://dba.stackexchange.com/questions/3281/how-do -i-use-currval-in-postgresql-to-get-the-last-insert-id), чтобы узнать, что такое текущее значение seq. Но вы также должны удалить последовательное поле из вставки –