동료의 스크립트를 실행할 때 위의 'ANSI 경고'메시지를 오늘 보았습니다 (그리고 많은 경고문 중 경고가 표시되는 원인을 모르겠습니다).
과거에 나는 그것을 무시했다 : 나는 널 스스로 피하고 따라서 그것들을 제거하는 것은 내 책에서 좋은 일이다! 그러나 오늘 'SET'이라는 단어가 문자 그대로 나에게 소리 쳤으며이 문맥에서 단어의 의미가 무엇인지 모른다는 것을 깨달았습니다.
대문자라는 사실을 바탕으로 한 첫 번째 생각은 SET키워드를 참조하고 '할당'을 의미한다는 것입니다.
UPDATE <table> SET ...
...ON DELETE SET NULL...
SET IDENTITY_INSERT <table> ON
SQL Server 도움말에 따르면 'ANSI 경고'기능은 ISO / ANSI SQL-92를 기반으로하며 하위 절 제목에서 제목 설정의 경우 'Set operation'이라는 용어를 한 번만 사용합니다. 데이터 할당 섹션. 그러나 오류 메시지에 대한 빠른 인터넷 검색 후 SELECT할당이 관련되지 않은 쿼리 인 예제가 표시됩니다 .
SQL Server 경고의 문구를 기반으로 한 두 번째 생각은 set의 수학적 의미가 함축되어 있다는 것입니다. 그러나 SQL의 집계가 엄격하게 설정 작업을 말하고 있다고 생각하지 않습니다. SQL Server 팀이이를 집합 작업으로 간주하더라도 'set'이라는 단어를 대문자로 사용하는 목적은 무엇입니까?
인터넷 검색 중에 SQL Server 오류 메시지가 나타났습니다.
Table 'T' does not have the identity property. Cannot perform SET operation.
같은 경우에 동일한 단어 'SET operation'은 IDENTITY_INSERT속성 의 할당 만 참조 할 수있어 처음으로 다시 생각하게됩니다.
누구든지 그 문제에 대해 밝힐 수 있습니까?
SET키워드처럼 항상 전체 대문자로 생각하지 않습니다
SELECT * FROM sys.messages WHERE text LIKE '%SET operation%'SET키워드 를 나타내는 것으로 보이는 3 가지 다른 결과를 제공 합니다.
set operations을 참조 UNION하고 INTERSECT와 EXCEPT, 그러나 나는 오류가 가지고 올 얻을 수없는 NULL그 상황의 어떤있다. 레거시 오류 메시지 일 수 있습니다.