无法在 PostgreSQL 中更新视图“例程”

Posted

技术标签:

【中文标题】无法在 PostgreSQL 中更新视图“例程”【英文标题】:can not update view "routines" in PostgreSQL 【发布时间】:2014-04-21 07:09:46 【问题描述】:

我在 PostgreSQL 中有一个包含近 400 个函数的数据库。其中许多函数都有 RAISE INFO 用于调试目的。现在我想在所有函数中评论这个 RAISE INFO。为此,我使用以下查询:

UPDATE information_schema.routines SET routine_definition = REPLACE(routine_definition,'RAISE','-- RAISE') WHERE (routine_definition) like '%RAISE%' 

但它给了我以下错误:

ERROR: cannot update view "routines"
SQL state: 55000
Detail: Views that do not select from a single table or view are not automatically updatable.
Hint: To enable updating the view, provide an INSTEAD OF UPDATE trigger or an unconditional ON UPDATE DO INSTEAD rule.

我不知道该怎么做。

【问题讨论】:

【参考方案1】:

你想要pg_proc.prosrc,尽管我担心你的方法也会改变其他 RAISE 语句。

【讨论】:

【参考方案2】:

谢谢理查德·赫克斯顿

这是供参考的详细信息查询:

 UPDATE pg_proc SET prosrc = REPLACE(prosrc,'RAISE','-- RAISE') WHERE (prosrc) like '%RAISE%'

【讨论】:

以上是关于无法在 PostgreSQL 中更新视图“例程”的主要内容,如果未能解决你的问题,请参考以下文章

postgresql无法创建触发器

如何在 postgresql 中更改所有视图的所有者

如何为没有已知列的 PostgreSQL 视图编写通用更新触发器?

PG 物化视图

Access 2010 访问PostgreSQL 无法更新

在 postgresql 中使用替换更新语句