sql-server – 错误消息中’SET’的含义’通过聚合或其他SET操作
我今天在运行同事的脚本时看到了上面的“ANSI警告”消息(我不知道哪些语句导致警告显示).
在过去,我忽略了它:我自己避免空白,所以任何能消除它们的东西在我的书中都是好事!然而,今天“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’这个词放在大写字母中的目的是什么? 谷歌搜索时我发现了一条SQL Server错误消息: Table 'T' does not have the identity property. Cannot perform SET operation. 在这里相同的情况下,“SET操作”的相同单词只能引用IDENTITY_INSERT属性的赋值,这让我回想起我的第一个想法. 任何人都可以解释这件事吗? 解决方法我只是看着 the SQL-92 Specification,看到一段让我想起这个问题.事实上,对于这种情况存在规定的警告,如下所示
我假设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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |