我試圖拿現有的表並創建兩個。我有一個sections
表,其中有一個file_url
,現在我需要將其移至url
字段media_files
表中。另外,我想填充attachments
表,該表充當has_many :through
(在Rails中),這意味着它跟蹤media_file_id
和section_id
的外鍵關係。PostgreSQL插入到多個表中,使用第二次插入中的第一次插入的外鍵
,我已經得到最接近的是這樣的:
WITH ids AS (
INSERT INTO media_files (url, mimetype)
SELECT file_url, 'image/jpeg'
FROM sections
WHERE file_url IS NOT NULL
RETURNING id AS media_file_id, sections.id AS section_id
)
INSERT INTO attachments (media_file_id, section_id)
SELECT media_file_id, section_id
FROM ids
,但我得到這個錯誤:
PG::UndefinedTable: ERROR: missing FROM-clause entry for table "sections"
LINE 6: RETURNING id AS media_file_id, sections.id AS sectio...
這是有道理的,但我不知道如何搶section_id
。
有沒有辦法讓這個工作?也許有更好的替代方法?
編輯:下面是SQL Fiddle
的sqlfiddle會有所幫助。 –