sql >> Base de Datos >  >> RDS >> Oracle

Tipo de datos de restricciones de Oracle

Esto es demasiado largo para un comentario.

No puedes hacer lo que quieres fácilmente. Oracle está convirtiendo el valor de entrada 3.2 a un entero. El entero cumple la restricción. El valor 3 es lo que se inserta. La conversión ocurre detrás de escena. Los desarrolladores de Oracle pensaron que esta conversión es "algo bueno".

Puede evitar esto declarando la columna como un número y luego comprobando que es un número entero:

create table test (
     A number, 
     constraints ACHECK check(A between 1 and 5 and mod(A, 1) = 0)
);