我有大量要同時插入PostgreSQL數據庫的行。我需要跟蹤爲每個插入的行分配了什麼id。比如講我們有表:如何從INSERT和其他插入的行中返回值
CREATE TABLE example
(
id serial,
name text,
CONSTRAINT example_pkey PRIMARY KEY (id),
);
現在我有,我不想插入(如序列ID列將分配一個新的ID)IDS的一些數據,但我需要跟蹤的映射之間舊的標識,新標識:
old id | name
-------------
-1 | foo
-2 | bar
-3 | baz
所以我寫了這個查詢
WITH data(oldid,name) AS (VALUES
(-1,'foo'),
(-2,'bar'),
(-3,'baz')
)
INSERT INTO example(name)
SELECT name FROM data d
RETURNING id, d.oldid
期待得到的東西回來就好:
id | oldid
-----------
1 | -1
2 | -2
3 | -3
但是,這不起作用,因爲我不相信你可以返回一個未插入的列。有沒有其他方法可以做到這一點?
我認爲最簡單的方法是將'oldid'列添加到您的示例表 – cha
我認爲'RETURNING'與插入創建的行一起工作 - 所以我不能引用其他集的列 –