To za długo na komentarz.
Nie możesz łatwo robić tego, co chcesz. Oracle konwertuje wartość wejściową 3.2
do liczby całkowitej. Liczba całkowita spełnia ograniczenie. Wartość 3
jest to, co jest wstawiane. Konwersja odbywa się za kulisami. Twórcy Oracle uznali, że ta konwersja to „dobra rzecz”.
Możesz to obejść, deklarując kolumnę jako liczbę a następnie sprawdzenie, czy jest to liczba całkowita:
create table test (
A number,
constraints ACHECK check(A between 1 and 5 and mod(A, 1) = 0)
);