Dit is te lang voor een reactie.
Je kunt niet zomaar doen wat je wilt. Oracle converteert de invoerwaarde 3.2
naar een geheel getal. Het gehele getal voldoet aan de beperking. De waarde 3
is wat wordt ingevoegd. De conversie gebeurt achter de schermen. De ontwikkelaars van Oracle vonden deze conversie een "goede zaak".
U kunt dit omzeilen door de kolom te declareren als een getal en dan controleren of het een geheel getal is:
create table test (
A number,
constraints ACHECK check(A between 1 and 5 and mod(A, 1) = 0)
);