Non ho sottomano un db oracle per provare (ormai da anni), ma mi pare che sia possibile usare CHECK per definire i valori inseribili in un campo.

es nella definizione della tabella...

campo NUMBER(6) CHECK (campo >= 0)

oppure l'uso di if oppure case per l'update ...

campo = campo - case when campo - #value# < 0 then campo

non ricordo l'esatta sintassi da usare, per l'insert non ci dovrebbero essere problemi di numeri negativi ovviamente.