2011-09-30 20 views
7

Khi tiêu đề cho biết: Có cách nào để tắt chuyển đổi loại ngầm định trong SQL Server không?Có cách nào để tắt chuyển đổi loại tiềm ẩn trong SQL Server không?

Tôi muốn các SQL đơn giản sau đây để tạo ra một lỗi

SELECT 'a' WHERE 1='1' 
+0

Câu hỏi hay, ngoại trừ: tại sao lại quan trọng? Sau một mười giây dài suy nghĩ về nó, tôi không thể nghĩ ra một ví dụ mà tôi sẽ _accidentally_ so sánh hai loại khác nhau, nhưng nếu tôi _deliberately_ so sánh hai loại khác nhau thì tôi muốn chuyển đổi ... – nnnnnn

+1

Tôi nghĩ rằng nó quan trọng đối với rất nhiều lý do. Trong số những người khác mà bạn đặt tên: so sánh ngẫu nhiên. Tôi nghĩ rằng nó sẽ là tốt đẹp để có một loại người dùng định nghĩa trong một bảng trên một lĩnh vực nhất định có thể là một chìa khóa và có một khóa nước ngoài trong một bảng khác. Tôi nghĩ rằng mặc định nên là khi so sánh hai giá trị - Nếu loại kiểu khác nhau: không thành công. – Yodiz

+1

Đó là một tính năng của SQL chuẩn mà Chris Date gán cho bạn bè của mình là E. F. Codd, ý tưởng là "đôi khi người dùng sẽ biết nhiều hơn DBMS". Nhưng Ngày coi đây là một sự đánh giá sai: google cụm từ chính xác '[" Kiểm tra tên miền kiểu mã hóa "] (http://www.google.co.uk/search?q=%22Codd-style+domain+checks% 22) để biết thêm chi tiết. – onedaywhen

Trả lời

10

Không có cách nào để tắt tính năng này.

Nó đã được yêu cầu mặc dù: thấy yêu cầu SET OPTION STRICT ON MS Connect đề xuất mà xuất phát từ Erland Sommarskog

Tuy nhiên, nó là hoàn toàn có thể dự đoán theo datatype precedence quy tắc

dụ bạn của một nước ngoài chính là thú vị bởi vì một thực tế Ràng buộc KEY NGOẠI HỐI yêu cầu cùng kiểu dữ liệu, độ dài và đối chiếu.

0

Không có cách nào để vô hiệu hóa chuyển đổi tiềm ẩn trong SQL server, mặc dù một số tìm kiếm sẽ hiển thị rằng nó là một cái gì đó một số người đã yêu cầu .

Các vấn đề liên quan