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

前端之家收集整理的这篇文章主要介绍了sql – “DELETE FROM table”的output_expression是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我最近遇到了一个奇怪的事情.以下是有效的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.

猜你在找的MsSQL相关文章