Postgres:更新与物化视图连接的表?错误:视图无法在物化视图中锁定行
Posted
技术标签:
【中文标题】Postgres:更新与物化视图连接的表?错误:视图无法在物化视图中锁定行【英文标题】:Postgres: Update table joined with materialized view? Error: view cannot lock rows in materialized view 【发布时间】:2014-03-24 15:30:52 【问题描述】:在 Postgres 9.3.3 中,我有一个物化视图,可以进行一些繁重/密集的计算。我想使用连接到原始表的物化视图来确定更改其状态的值。如何在 Postgres 中使用更新连接来做到这一点?
UPDATE account
SET status = 3
FROM account a
JOIN mv_account mv ON mv.id = a.id
WHERE mv.very_long_calc = true
ERROR: cannot lock rows in materialized view "mv_account"
SQL state: 42809
【问题讨论】:
【参考方案1】:可能与此错误有关:
http://www.postgresql.org/message-id/CAB7nPqTW3=97=e4aVO4qOp85ZA1OX74DvBhKTag1CEOgMZESaw@mail.gmail.com
And probably fixed in 9.3.4:
允许在 UPDATE 和 DELETE 命令中引用实体化视图 (Michael Paquier)
以前此类查询因抱怨无法锁定具体化视图中的行而失败。
没有理由进行自加入。做吧:
update account a
set status = 3
from mv_account mv
where mv.id = a.id and mv.very_long_calc
【讨论】:
以上是关于Postgres:更新与物化视图连接的表?错误:视图无法在物化视图中锁定行的主要内容,如果未能解决你的问题,请参考以下文章