Я пытаюсь понять, как вставить данные из таблицы 1 в таблицу 2, а затем использовать вновь созданный идентификатор из таблицы 2 для обновления соответствующей строки в таблице 1.
Я использую Postgres 12.4 для чего он стоит
Пример: у меня есть две таблицы, например users
и metadata
В таблицах пользователей есть следующие столбцы
| id | info | metadata_id |
В таблице метаданных есть следующие столбцы
| id | data |
Я хочу перенести все мои значения info
из таблицы users
в столбец data
таблицы metadata
и обновить свой users.metadata_id
(в настоящее время пустой) соответствующими значениями metadata.id
, по сути, путем обратного заполнения внешних ключей.
Есть ли способ сделать это изящно? У меня есть рабочий запрос, который блокирует обе таблицы и создает временную последовательность для вставки в metadata.id
и users.metadata_id
, но это кажется хрупким, и мне нужно будет запускать последовательность после самого высокого существующего идентификатора в таблице метаданных, который не идеальный.
Я также пытался использовать CTE, изменяющий данные, с предложением RETURNING для обновления таблицы users
, но не смог заставить это работать.