sql - 插入到简单的 Postgres View 中

标签 sql postgresql

<分区>

Postgres documentation

Simple views are automatically updatable: the system will allow INSERT, UPDATE and DELETE statements to be used on the view in the same way as on a regular table.

然后它列出了一些要求。我相信我的 View 满足所有这些要求,但如果我尝试插入该 View ,我会收到错误消息:

psql:C355A12.txt:1702: ERROR:  cannot insert into a view
HINT:  You need an unconditional ON INSERT DO INSTEAD rule.

我要插入的 View 定义为:

CREATE VIEW locationsView
    AS SELECT lc_name, lc_min, lc_max, lc_sizeX, lc_sizeY
    FROM locations;

这是表定义:

CREATE TABLE locations(
    lc_name LocationName NOT NULL,
    lc_min LocationMin NOT NULL
        DEFAULT 0,
    lc_max LocationMax NOT NULL
        DEFAULT 0,
    lc_sizeX LocationSizeX NOT NULL,
    lc_sizeY LocationSizeY NOT NULL,
    PRIMARY KEY (lc_name)
);

使用的域是:

CREATE DOMAIN LocationName AS TEXT;
CREATE DOMAIN LocationMin AS INT;
CREATE DOMAIN LocationMax AS INT;
CREATE DOMAIN LocationSizeX As INT;
CREATE DOMAIN LocationSizeY As INT;

我如何获得文档描述的这种“自动更新”特性?

我使用的是 Postgres 版本 9.3.4。

最佳答案

您正在阅读的 PostgreSQL 服务器版本的文档比您正在连接运行的版本 (8.4) 更新。

在 PostgreSQL 9.3 中引入了可简单更新的 View 支持。您的 psql 客户端是 9.3 版,但如果连接到 8.4 服务器,这不会影响服务器端功能。

关于sql - 插入到简单的 Postgres View 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25982771/

相关文章:

mysql - sql select查询返回大写

sql - 使用单个连接查询而不是多个查询来提高性能?

sql - 如何遍历拆分字符串

postgresql - 单个语句中存在多个 select

java - 如何在JPA中保留父级和子级?

postgresql - 字段显示为 null 或空字符串,但我无法选择它

Java,将传入附件与数据库中的图像列表进行比较,看看是否相同

sql - 在可安排培训师的定义空间内查找连续日期

sql - PostgreSQL 导入不起作用

python - psycopg2.InternalError : parse error - invalid geometry