加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – “DELETE FROM table”的output_expression是什么?

发布时间:2020-12-12 08:34:13 所属栏目:MsSql教程 来源:网络整理
导读:我最近遇到了一个奇怪的事情.以下是有效的SQL: DELETE FROM customer *; PostgreSQL DELETE的文档说明星是output_expression的一个可能值: An expression to be computed and returned by the DELETE command after each row is deleted. The expression ca
我最近遇到了一个奇怪的事情.以下是有效的SQL:
DELETE FROM customer *;

PostgreSQL DELETE的文档说明星是output_expression的一个可能值:

An expression to be computed and returned by the DELETE command after
each row is deleted. The expression can use any column names of the
table or table(s) listed in USING. Write * to return all columns.

我试过,没有明星,看不出有什么区别.事实上,我可以把任何单词放在桌子名后面,并且被接受.它甚至不必是一个实际的列名.没有额外的回报.

db=> DELETE FROM customer wheeeeeee;
DELETE 19

那么它做什么,我可以用它呢?

问题also posted on the PostgreSQL mailing list.

解决方法

星号不是output_expression,因此您必须使用RETURNING关键字.而是一个旧的,过时的语法,用于在查询中包含子表. (最后一个版本的文档似乎是 PostgreSQL 8.1.由于语法仍然有效,它是一个文档错误,Tom Lane在下面链接中指出.)

因为PostgreSQL 7.1这是默认的(除非sql_inheritance被设置为off),而ONLY关键字是用于相反的,所以*并不是很有用.

见this explanatory post from Tom Lane on the PostgreSQL mailing list.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读