Das ist zu lang für einen Kommentar.
Du kannst nicht einfach tun, was du willst. Oracle konvertiert den Eingabewert 3.2
zu einer Ganzzahl. Die Ganzzahl erfüllt die Einschränkung. Der Wert 3
wird eingefügt. Die Konvertierung findet hinter den Kulissen statt. Die Entwickler von Oracle hielten diese Umstellung für eine "gute Sache".
Sie könnten dies umgehen, indem Sie die Spalte als Zahl deklarieren und dann prüfen, ob es sich um eine ganze Zahl handelt:
create table test (
A number,
constraints ACHECK check(A between 1 and 5 and mod(A, 1) = 0)
);