理想情况下,9.1版本中的新功能“WITH ROWS”应该支持跨越数据库边界,但似乎只能在单个数据库中使用。
WITH moved_rows AS (
DELETE FROM events
WHERE
"date" >= '2010-01-01' AND
"date" < '2011-01-01'
RETURNING *
)
INSERT INTO events_archive
SELECT * FROM moved_rows;
我希望我能像这样指定事件:"DELETE FROM LiveDB.events",然后我可以执行"INSERT INTO ArchiveDB.events"。但是,使用dblink似乎无法获取要移动的行列表,即使它可以,我也不确定此语句在跨数据库的事务安全性。