работает только если id является целым числом, а не если он последовательный

я есть база данных PostgreSQL 9, которая использует автоинкрементные целые числа в качестве первичных ключей. Я хочу продублировать некоторые строки в таблице (основываясь на некоторых критериях фильтра) при изменении одного или двух значений, то есть скопировать все значения столбца, кроме идентификатора (который создается автоматически) и, возможно, другого столбца.

Тем не менее, я также хочу получить отображение старых идентификаторов на новые. Есть ли лучший способ сделать это, тогда просто запросить сначала строки для копирования, а затем вставлять новые строки по одной за раз?

По сути, я хочу сделать что-то вроде этого:

INSERT INTO my_table (col1, col2, col3)
SELECT col1, 'new col2 value', col3
FROM my_table old
WHERE old.some_criteria = 'something'
RETURNING old.id, id;

Однако это не сERROR: missing FROM-clause entry for table "old" и я понимаю, почему: Postgres должен сначала выполнить SELECT, а затем вставить его иRETURNING пункты имеют доступ только к недавно вставленной строке.

Ответы на вопрос(2)

Ваш ответ на вопрос