Bar*_*own 11 sql postgresql sql-delete
我最近遇到了一个奇怪的问题.以下是有效的SQL:
DELETE FROM customer *;
Run Code Online (Sandbox Code Playgroud)
PostgreSQL DELETE的文档说明星是一个可能的值output_expression
:
删除每一行后由DELETE命令计算和返回的表达式.表达式可以使用USING中列出的表或表的任何列名.写*以返回所有列.
我在有星和没有星星的情况下尝试过它,看不出有什么区别.事实上,我可以在表名之后添加任何单个单词并且它被接受.它甚至不必是实际的列名.没有额外的东西返回.
db=> DELETE FROM customer wheeeeeee;
DELETE 19
Run Code Online (Sandbox Code Playgroud)
那么它做了什么以及我可以用它做什么?
星号不是 output_expression,为此你必须使用RETURNING
关键字.相反,它是一种旧的,过时的语法,用于在查询中包含子表.(它记录的最后一个版本似乎是PostgreSQL 8.1.由于语法仍然有效,它是一个文档错误,正如Tom Lane在下面链接的帖子中指出的那样.)
由于PostgreSQL 7.1这是默认值(除非sql_inheritance设置为off)并且ONLY
关键字用于相反的,所以*不是很有用.
请参阅PostgreSQL邮件列表中Tom Lane的解释性帖子.
归档时间: |
|
查看次数: |
256 次 |
最近记录: |