简单视图可自动更新:系统将允许INSERT,UPDATE和DELETE语句以与常规表相同的方式在视图上使用。
然后列出了许多要求。我相信我的观点符合所有这些要求,但如果我尝试插入该视图,我会收到错误:
psql:C355A12.txt:1702: ERROR: cannot insert into a view
HINT: You need an unconditional ON INSERT DO INSTEAD rule.
我插入的视图定义为:
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。
答案 0 :(得分:2)
您正在阅读较新版本的PostgreSQL服务器的文档,而不是您正在连接到正在运行的版本(8.4)。
PostgreSQL 9.3中引入了可更新的视图支持。您的psql
客户端版本为9.3,但如果连接到8.4服务器,则不会影响服务器端功能。