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

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

--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
25.04.2015, 16:13
    #38945258
svazeeland
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert into tab1 (id, name) (select nextval('seq'), name from tab2) ругается на pk
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
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / insert into tab1 (id, name) (select nextval('seq'), name from tab2) ругается на pk / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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