Я пытаюсь переместить bytea
данные из одной таблицы в другую, обновляя ссылки в одном запросе.
Поэтому я хотел бы вернуть данные из запроса, используемого для вставки, который не используется для вставки.
INSERT INTO file_data (data)
select image from task_log where image is not null
RETURNING id as file_data_id, task_log.id as task_log_id
Но я получаю сообщение об ошибке для этого запроса:
[42P01] ERROR: missing FROM-clause entry for table "task_log"
Я хочу сделать что-то вроде:
WITH inserted AS (
INSERT INTO file_data (data)
SELECT image FROM task_log WHERE image IS NOT NULL
RETURNING id AS file_data_id, task_log.id AS task_log_id
)
UPDATE task_log
SET task_log.attachment_id = inserted.file_data_id,
task_log.attachment_type = 'INLINE_IMAGE'
FROM inserted
WHERE inserted.task_log_id = task_log.id;
Но мне не удается получить все данные, используемые для вставки, я не могу вернуть идентификатор из подвыборки.
Меня вдохновил этот ответ о том, как это сделать с помощью Common Table Expressions, но я не могу найти способ заставить его работать.
SET task_log.attachment_id = ...
--››SET attachment_id = ...
и т. д. - person joop   schedule 09.11.2017