Tôi đã thấy thông báo 'Cảnh báo ANSI' ở trên hôm nay khi chạy tập lệnh của đồng nghiệp (và tôi không biết câu nào trong số nhiều câu đã gây ra cảnh báo được hiển thị).
Trong quá khứ tôi đã bỏ qua nó: Tôi tránh bản thân mình và vì vậy bất cứ điều gì sẽ loại bỏ chúng là một điều tốt trong cuốn sách của tôi! Tuy nhiên, hôm nay, từ "TẬP" theo nghĩa đen đã hét lên với tôi và tôi nhận ra rằng tôi không biết ý nghĩa của từ này là gì trong ngữ cảnh này.
Suy nghĩ đầu tiên của tôi, dựa trên thực tế là chữ hoa, là nó đang đề cập đến SETtừ khóa và có nghĩa là 'bài tập', như trong
UPDATE <table> SET ...
...ON DELETE SET NULL...
SET IDENTITY_INSERT <table> ON
Theo Trợ giúp Máy chủ SQL, tính năng 'Cảnh báo ANSI' dựa trên ISO / ANSI SQL-92, thông số kỹ thuật chỉ sử dụng một thuật ngữ 'Đặt thao tác' trong tiêu đề phụ, trong trường hợp tiêu đề, trong trường hợp tiêu đề, trong trường hợp tiêu đề phần gán dữ liệu. Tuy nhiên, sau khi thông báo nhanh về thông báo lỗi, tôi thấy các ví dụ là SELECTcác truy vấn dường như không có nhiệm vụ liên quan.
Suy nghĩ thứ hai của tôi, dựa trên từ ngữ của cảnh báo SQL Server, là ý nghĩa toán học của tập hợp được ngụ ý. Tuy nhiên, tôi không nghĩ rằng tập hợp trong SQL nói đúng là một thao tác được thiết lập. Ngay cả khi nhóm SQL Server coi đó là một hoạt động được thiết lập, mục đích của việc đặt từ 'set' thành chữ hoa là gì?
Trong khi Googling tôi nhận thấy một thông báo lỗi SQL Server:
Table 'T' does not have the identity property. Cannot perform SET operation.
Các từ tương tự 'Thao tác SET' trong cùng một trường hợp ở đây chỉ có thể đề cập đến việc chuyển nhượng IDENTITY_INSERTtài sản, điều này đưa tôi trở lại với suy nghĩ đầu tiên của mình.
Bất cứ ai có thể làm sáng tỏ vấn đề?
SETluôn ở trạng thái đầy đủ như một từ khóa
SELECT * FROM sys.messages WHERE text LIKE '%SET operation%'đưa ra 3 kết quả khác mà tất cả dường SETnhư cũng chỉ ra từ khóa.
set operationstham khảo UNIONvà INTERSECTvà EXCEPT, nhưng tôi không thể nhận được lỗi để đưa ra NULLtrong bất kỳ của những trường hợp này. Tôi nghĩ rằng nó có thể là một thông báo lỗi di sản.