Toto je příliš dlouhé na komentář.
Nemůžete snadno dělat, co chcete. Oracle převádí vstupní hodnotu 3.2
na celé číslo. Celé číslo splňuje omezení. Hodnota 3
je to, co se vkládá. Konverze se děje v zákulisí. Vývojáři Oracle usoudili, že tato konverze je „dobrá věc“.
Můžete to obejít deklarováním sloupce jako číslo a poté zkontrolujte, zda se jedná o celé číslo:
create table test (
A number,
constraints ACHECK check(A between 1 and 5 and mod(A, 1) = 0)
);