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 SET
từ 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à SELECT
cá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_INSERT
tà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 đề?
SET
luô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 SET
như cũng chỉ ra từ khóa.
set operations
tham khảo UNION
và INTERSECT
và EXCEPT
, nhưng tôi không thể nhận được lỗi để đưa ra NULL
trong 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.