ฉันเห็นข้อความ 'คำเตือน ANSI' ข้างต้นวันนี้เมื่อเรียกใช้สคริปต์ของเพื่อนร่วมงาน (และฉันไม่ทราบว่าคำสั่งใดในหลาย ๆ คำที่ทำให้คำเตือนปรากฏขึ้น)
ในอดีตที่ผ่านมาฉันไม่สนใจ: ฉันหลีกเลี่ยงโมฆะตัวเองและดังนั้นสิ่งที่จะกำจัดพวกเขาเป็นสิ่งที่ดีในหนังสือของฉัน! อย่างไรก็ตามวันนี้คำว่า 'SET' ตะโกนออกมาอย่างแท้จริงและฉันก็รู้ว่าฉันไม่รู้ความหมายของคำว่าควรจะอยู่ในบริบทนี้
ความคิดแรกของฉันขึ้นอยู่กับความจริงมันเป็นตัวพิมพ์ใหญ่คือมันหมายถึงSETคำหลักและหมายถึง 'การมอบหมาย' ใน
UPDATE <table> SET ...
...ON DELETE SET NULL...
SET IDENTITY_INSERT <table> ON
ตามความช่วยเหลือของเซิร์ฟเวอร์ SQL คุณลักษณะ 'คำเตือนของ ANSI' จะขึ้นอยู่กับ ISO / ANSI SQL-92 ข้อมูลจำเพาะที่ใช้คำว่า 'ตั้งค่าการดำเนินงาน' เพียงครั้งเดียวในหัวข้อย่อยดังนั้นในกรณีหัวเรื่องใน ส่วนการกำหนดข้อมูล อย่างไรก็ตามหลังจาก Googling อย่างรวดเร็วของข้อความแสดงข้อผิดพลาดฉันเห็นตัวอย่างที่เป็นSELECTแบบสอบถามที่ดูเหมือนจะไม่มีการมอบหมายที่เกี่ยวข้อง
ความคิดที่สองของฉันซึ่งขึ้นอยู่กับถ้อยคำของคำเตือน SQL Server คือความหมายทางคณิตศาสตร์ของชุดนั้นเป็นนัย อย่างไรก็ตามฉันไม่คิดว่าการรวมใน SQL จะพูดถึงการดำเนินการที่กำหนดไว้อย่างเคร่งครัด แม้ว่าทีม SQL Server จะพิจารณาว่าเป็นการดำเนินการชุดวัตถุประสงค์ของการวางคำว่า 'ชุด' ในเมืองหลวงคืออะไร?
ในขณะที่ Googling ฉันสังเกตเห็นข้อความแสดงข้อผิดพลาด SQL Server:
Table 'T' does not have the identity property. Cannot perform SET operation.
คำว่า 'การดำเนินงาน SET' คำเดียวกันในกรณีเดียวกันที่นี่สามารถอ้างถึงการมอบหมายของIDENTITY_INSERTทรัพย์สินซึ่งทำให้ฉันกลับไปที่ความคิดแรกของฉัน
ใครสามารถฉายแสงในเรื่องนี้ได้บ้าง?
SETอยู่ในตัวพิมพ์ใหญ่แบบเต็มเสมอเช่นคำหลัก
SELECT * FROM sys.messages WHERE text LIKE '%SET operation%'ให้ผลลัพธ์อื่นอีก 3 รายการที่ดูเหมือนจะบ่งบอกถึงSETคำหลักเช่นกัน
set operationsอ้างถึงUNIONและINTERSECTและEXCEPTแต่ฉันไม่สามารถรับข้อผิดพลาดได้NULLในทุกกรณี ฉันคิดว่าอาจเป็นข้อความแสดงข้อผิดพลาดเดิม