2010-06-30 42 views
1

我試圖創建phpPgAdmin的(PostgreSQL的DB)視圖,其具有以下SQL語句時:phpPgAdmin的語法錯誤創建視圖

DELETE FROM myTable WHERE myTable.error IS NULL; 

phpPgAdmin的給了我以下錯誤:

ERROR: syntax error at or near "DELETE" at character 59 In statement: CREATE OR REPLACE VIEW "Schema1"."Delete empty errors" AS DELETE FROM myTable WHERE myTable.error IS NULL;

據我所知,這條SQL語句是有效的,並且我已經刪除了這個表的特權。視圖中不允許使用DELETE語句?任何想法我做錯了什麼?

回答

4

視圖僅用於顯示來自SELECT語句的數據(通常在SELECT複雜時)。視圖不能包含DELETES,UPDATES或INSERTS。

也許你想要function

編輯:由於OMG Ponies指出,您可以擁有可更新的視圖,但那就是您將對現有視圖執行DELETE操作,然後使用RULE將查詢重寫爲DELETE操作。

請注意,請不要包裝函數調用來在視圖中執行DELETE作爲副作用。它出人意料,耶穌每次發生這種事情都會射出一隻小狗。

+0

Postgres通過規則支持可更新的視圖:http://www.postgresql.org/docs/8.2/static/sql-createview.html – 2010-06-30 17:31:57

+0

並且函數調用可以被包裝在視圖中。 – 2010-06-30 17:35:12

+0

好的,你可以使用規則來更新視圖,並且可以在視圖中包裝一個函數調用,但是我從來沒有在視圖中看到一個簡單的DELETE – pcent 2010-06-30 17:58:32