gpt4 book ai didi

postgresql - 无法在 PostgreSQL 中更新 View ?

转载 作者:行者123 更新时间:2023-11-29 11:22:41 26 4
gpt4 key购买 nike

我的网站是使用在 Ubuntu 11.10 上的 Postgresql 8.3 服务器上运行的 Drupal 6 开发的。还有 webmin 版本 1.590。

现在我想更新表中的记录,但是当我运行时:

UPDATE uac_institution_view SET status = '2' WHERE nid = '9950'

它给我这样的错误:

Failed to execute SQL : SQL UPDATE uac_institution_view SET status ='2' WHERE nid = '9950' failed : ERROR: cannot update a view HINT: Youneed an unconditional ON UPDATE DO INSTEAD rule.

问题是只有 SELECT 查询有效。 UPDATEINSERTDELETE 命令无效;他们因上述错误而失败。

这是权限问题吗?语法错误?还有别的吗?

最佳答案

默认情况下,PostgreSQL View 不可更新。您必须告诉 PostgreSQL 您希望如何更新 View 。

使用“无条件 ON UPDATE DO INSTEAD 规则”(如您粘贴的错误消息所述)或最好在 PostgreSQL 9.1 及更高版本上使用 View 触发器来执行此操作。我在 my answer to your previous post 中提供了所有内容的链接,但这里还有更多信息:

在许多情况下,最好让 View 保持只读状态,只更新基础表。由于您没有提供 View 的定义,因此很难说出实际涉及的内容。用在 psql 中运行 \d uac_institution_view 的输出更新你的问题,并评论说你已经这样做了;也许我可以指出一种直接在基础表上运行更新的方法。

您使用的是非常过时的 PostgreSQL (8.3) 版本,因此您不能使用首选的 INSTEAD OF 触发器方法,您必须使用规则或直接更新基础表。

关于postgresql - 无法在 PostgreSQL 中更新 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13151566/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com