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