sql - PhpPgAdmin 创建 View 时出现语法错误

标签 sql postgresql view phppgadmin updatable-views

我正在尝试在具有以下 SQL 语句的 PhpPgAdmin (PostGreSQL db) 中创建一个 View :

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 语句是有效的,而且我对表有删除权限。 View 中不允许使用 DELETE 语句吗?知道我做错了什么吗?

最佳答案

View 仅用于显示来自 SELECT 语句的数据(通常当 SELECT 很复杂时)。 View 不能包含 DELETES、UPDATES 或 INSERTS。

也许你想要一个 function

编辑:正如 OMG Ponies 指出的那样,您可以拥有可更新的 View ,但这就是您要对现有 View 发出 DELETE,然后使用 RULE 将查询重写为 DELETE 的地方。

请不要将执行 DELETE 的函数调用包装为 View 中的副作用。这是出乎意料的,每次发生这种情况,耶稣都会射杀一只小狗。

关于sql - PhpPgAdmin 创建 View 时出现语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3151753/

相关文章:

sql - 索引和多列主键

php - Silverstripe 仅创建索引但不创建外键

postgresql - 如何更改 PostgreSQL Studio 的不活动超时?

javascript - 在 html 和 javascript 中设置文件 src 有什么区别

sql - 使用 dplyr::left_join (R lang) 与 SQL LEFT JOIN 处理 NA/NULL 的差异

SQL 连接单个表的多行

python - Django 过滤、分页和注释分页结果

mysql - MySQL 中没有子查询的多表聚合

PHP 从 MYSql View 中选择不返回任何内容

mysql - 如何在一个 INSERT 上获取多行的插入 ID?