2011-09-30 14 views
7

Como el título indica: ¿Hay alguna forma de desactivar la conversión de tipo implícita en SQL Server?¿Hay alguna forma de desactivar la conversión de tipo implícita en SQL Server?

Quiero el siguiente código SQL sencilla para generar un error

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

Buena pregunta, excepto: ¿por qué es importante? Después de diez largos segundos pensando en ello, no puedo pensar en un ejemplo en el que accidentalmente compararía dos tipos diferentes, pero si estoy _deliberadamente_ comparando dos tipos diferentes, entonces quiero la conversión ... – nnnnnn

+1

Creo que importa mucho de razones Entre otros, el que usted nombra: comparación accidental. Creo que sería bueno tener un tipo definido por el usuario en una tabla en un campo dado que podría ser una clave y tener una clave externa en otra tabla. Creo que el valor predeterminado debería ser el al comparar dos valores: si los tipos de tipos son diferentes: error. – Yodiz

+1

Es una característica de SQL estándar que Chris Date le atribuye a su amigo E. F. Codd, con la idea de que "a veces el usuario sabrá más de lo que DBMS lo hace". Pero Date considera que esto ha sido un error de juicio: google la frase exacta '[" Verificaciones de dominio estilo codd "] (http://www.google.co.uk/search?q=%22Codd-style+domain+checks% 22) para más detalles. – onedaywhen

Respuesta

10

No hay forma de deshabilitarlo.

Se ha solicitado sin embargo: vea la solicitud SET OPTION STRICT ON MS Conectar propuesta que viene de Erland Sommarskog

Sin embargo, es completamente predecible de acuerdo con datatype precedence reglas

Su ejemplo de una clave externa es interesante porque una real La restricción FOREIGN KEY requiere el mismo tipo de datos, longitud y colación.

0

No hay manera de desactivar las conversiones implícitas en el servidor SQL, aunque algunas búsquedas mostrará que es algo que un número de personas que han solicitado .

Cuestiones relacionadas