Dette er for langt til en kommentar.
Du kan ikke nemt gøre, hvad du vil. Oracle konverterer inputværdien 3.2
til et heltal. Heltallet opfylder begrænsningen. Værdien 3
er det, der indsættes. Konverteringen sker bag kulisserne. Udviklerne af Oracle regnede med, at denne konvertering er en "god ting".
Du kan omgå dette ved at erklære kolonnen som et nummer og derefter kontrollere, at det er et heltal:
create table test (
A number,
constraints ACHECK check(A between 1 and 5 and mod(A, 1) = 0)
);