在过去,我忽略了它:我自己避免空白,所以任何能消除它们的东西在我的书中都是好事!然而,今天“SET”这个词字面上对我大喊大叫,我意识到我不知道这个词在这个背景下应该是什么意思.
我的第一个想法,基于它是大写的事实,是它指的是SET关键字,意思是’赋值’,如在
UPDATE <table> SET ... ...ON DELETE SET NULL... SET IDENTITY_INSERT <table> ON
根据sql Server帮助,“ANSI警告”功能基于ISO / ANSI sql-92,其规范仅在子节标题中使用术语“设置操作”,因此在标题情况下,在数据分配部分.但是,在快速搜索错误消息后,我看到的示例是SELECT查询,似乎没有涉及任务.
根据sql Server警告的措辞,我的第二个想法是隐含了set的数学含义.但是,我不认为sql中的聚合严格来说是一个集合操作.即使sql Server团队认为它是一个集合操作,将’set’这个词放在大写字母中的目的是什么?
Table 'T' does not have the identity property. Cannot perform SET operation.
在这里相同的情况下,“SET操作”的相同单词只能引用IDENTITY_INSERT属性的赋值,这让我回想起我的第一个想法.
任何人都可以解释这件事吗?
解决方法
事实上,对于这种情况存在规定的警告,如下所示
b) Otherwise,let TX be the single-column table that is the
result of applying the<value expression>
to each row of T
and eliminating null values. If one or more null values are
eliminated,then a completion condition is raised: warning-
null value eliminated in set function.
我假设sql Server错误消息中的SET是对该错误消息的set函数的引用,虽然我不确定为什么它会区分聚合和其他set函数,只要我可以看到它们是同义词.语法的相关部分如下.
6.5 <set function specification> Function Specify a value derived by the application of a function to an argument. Format <set function specification> ::= COUNT <left paren> <asterisk> <right paren> | <general set function> <general set function> ::= <set function type> <left paren> [ <set quantifier> ] <value expression> <right paren> <set function type> ::= AVG | MAX | MIN | SUM | COUNT <set quantifier> ::= DISTINCT | ALL