powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / insert into tab1 (id, name) (select nextval('seq'), name from tab2) ругается на pk
3 сообщений из 3, страница 1 из 1
insert into tab1 (id, name) (select nextval('seq'), name from tab2) ругается на pk
    #38945113
svazeeland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, подскажите по постгресу пожалуйста.
Копирую строки из таблицы в таблицу, хочу брать id из сиквенса.
Запрос из сабжа ругается на нарушение уникальности.
вообще
select nextval('seq'),name from tab2
дает
1,name1
1,name2
...
не понятно почему не увеличивается счетчик последовательности, оракл работает по другому, подскажите что с постгресом делать в такой ситуации. Спасибо!
...
Рейтинг: 0 / 0
insert into tab1 (id, name) (select nextval('seq'), name from tab2) ругается на pk
    #38945114
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svazeelandКоллеги, подскажите по постгресу пожалуйста.
Копирую строки из таблицы в таблицу, хочу брать id из сиквенса.
Запрос из сабжа ругается на нарушение уникальности.
вообще
select nextval('seq'),name from tab2
дает
1,name1
1,name2
...
не понятно почему не увеличивается счетчик последовательности, оракл работает по другому, подскажите что с постгресом делать в такой ситуации. Спасибо!

Не воспроизводится у меня.
Приведите полный тестовый пример и использованную версию PostgreSQL.

--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
insert into tab1 (id, name) (select nextval('seq'), name from tab2) ругается на pk
    #38945258
svazeeland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk, спасибо, поутру разобрался, может пригодится:
Код: sql
1.
2.
3.
4.
5.
6.
7.
create table tab1 (id INTEGER, name VARCHAR(10) );
CREATE SEQUENCE seq_test INCREMENT 1 START 1;
create table tab2 (id INTEGER, name VARCHAR(10) );
insert into tab1 ( id, name ) (select nextval('seq_test'), 'name1');
insert into tab1 ( id, name ) (select nextval('seq_test'), 'name2');
insert into tab1 ( id, name ) (select nextval('seq_test'), 'name3');
select * from tab1;


сначала так (работает правильно)
Код: sql
1.
insert into tab2 ( id, name ) (select nextval('seq_test'), name from tab1 );


потом так (работает не правильно)
Код: sql
1.
insert into tab2 ( id, name ) (select (select nextval('seq_test')), name from tab1 );


итого
Код: sql
1.
select * from tab2;


id name
4 name1
5 name2
6 name3
7 name1
7 name2
7 name3
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / insert into tab1 (id, name) (select nextval('seq'), name from tab2) ругается на pk
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]