今天,当我运行同事的脚本时,我看到了上面的“ 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团队将其视为设置操作,将“设置”一词用大写字母的目的是什么?
在谷歌搜索时,我注意到一条SQL Server错误消息:
Table 'T' does not have the identity property. Cannot perform SET operation.
在相同情况下,相同的“设置操作”一词只能指代IDENTITY_INSERT
属性的分配,这使我回到了最初的想法。
谁能阐明这个问题?
SET
总是在全帽像关键字
SELECT * FROM sys.messages WHERE text LIKE '%SET operation%'
给出了另外3个似乎也都表示SET
关键字的结果。
set operations
引用,但是在任何一种情况下我都找不到错误。我认为这可能是遗留的错误消息。UNION
INTERSECT
EXCEPT
NULL