我正在尝试在PhpPgAdmin(PostGreSQL db)中创建一个具有以下SQL语句的视图:
DELETE FROM myTable WHERE myTable.error IS NULL;
PhpPgAdmin给出了以下错误:
错误:字符59处的“DELETE”处或附近的语法错误 声明: 创建或替换视图“Schema1”。“删除空错误”AS DELETE FROM myTable WHERE myTable.error IS NULL;
据我所知,这个SQL语句是有效的,我有删除该表的权限。视图中是否不允许使用DELETE语句?我有什么想法吗?
答案 0 :(得分:4)
视图仅用于显示SELECT语句中的数据(通常在SELECT复杂时)。视图不能包含DELETES,UPDATES或INSERTS。
也许你想要一个function?
编辑:正如OMG Ponies指出的那样,您可以拥有可更新的视图,但是您可以在其中向现有视图发出DELETE,然后使用RULE将查询重写为DELETE。请不要包含函数调用以在视图中执行DELETE作为副作用。每当发生这种情况时,它就会出乎意料地和耶稣射杀一只小狗。