2013-06-03 8 views
0

Что я пытаюсь сделать, это выбрать различные строки из определенной таблицы и вставить их обратно в ту же таблицу. Моя проблема в том, что я все время сталкиваюсь со всей ошибкой «duplicate PK» - есть ли способ пропустить поле PK при выполнении инструкции INSERT INTO в PostgreSQL?PostgreSQL - инструкция INSERT INTO

Например:

INSERT INTO reviews SELECT * FROM reviews WHERE rev_id=14; 

rev_id в предыдущем SQL ключ PK, который я как-то нужно пропустить. (Чтобы уточнить: я использую * в инструкции SELECT, потому что число столбцов таблицы может динамически увеличиваться).

Итак, есть ли способ пропустить поле PK?

Заранее спасибо.

+1

Вы пытаетесь дублировать строку с присвоенным ему новым идентификатором? Это кажется действительно странным делом. –

ответ

2
insert into reviews (col0, col1, ...) select col0, col1, ... from reviews where rev_id=14; 
+0

Это нормально, но колонки отзывов растут динамически в определенные моменты, так как я не могу точно сказать имя столбца – user1023242

+0

, что не звучит хорошо. почему столбцы меняются? – buritos

+2

@ user1023242 Динамические имена столбцов? Это все больше напоминает проблему проектирования модели данных, а не проблему запроса. –

3

Вы можете вставить только значения, которые вы хотите, чтобы ваш ПК получит автоинкрементным

insert into reviews (col1, col2, col3) select col1, col2, col3 from reviews where rev_id=14 

Пожалуйста, не получить/вставить ID-столбец

Смежные вопросы