3
的Postgres documentation说插入到简单的Postgres的意见
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.
然后列出了一些要求。我相信,我的看法满足所有这些要求,但如果我尝试插入这个观点,我得到的错误:
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。
你能告诉我们表'locations'的定义吗? – 2014-09-22 20:58:18
@a_horse_with_no_name,位置定义在这里:https://gist.github.com/anonymous/c354f5d62f7ea6585f30 – Kat 2014-09-22 21:02:26
对不起,这是一个问题,我重命名问题中的字段,以消除问题的噪音。我用一个重现问题的*精确*代码编辑了问题。我最初没有提到域,因为我不相信它们与问题有关(我可以在表中插入罚款,而不是视图)。我重命名了这些属性,因为它们的命名方案对于此类所需的类是必需的。 – Kat 2014-09-22 21:10:18