Ini terlalu panjang untuk dikomentari.
Anda tidak dapat melakukan apa yang Anda inginkan dengan mudah. Oracle mengonversi nilai input 3.2
ke bilangan bulat. Bilangan bulat memenuhi batasan. Nilai 3
adalah apa yang dimasukkan. Konversi terjadi di belakang layar. Pengembang Oracle menganggap konversi ini adalah "hal yang baik".
Anda dapat menyiasatinya dengan mendeklarasikan kolom sebagai angka dan kemudian memeriksa apakah itu bilangan bulat:
create table test (
A number,
constraints ACHECK check(A between 1 and 5 and mod(A, 1) = 0)
);