日期:2014-05-17 浏览次数:20745 次
dex@ORCL> create table t (n number) ; Table created. dex@ORCL> alter table t add constraint ck_t_n check (n>=0) deferrable initially deferred ; Table altered. dex@ORCL> create or replace trigger tg_t_nozero 2 before insert on t 3 for each row 4 begin 5 if :new.n<0 then 6 :new.n := 0; 7 end if ; 8 end ; 9 / Trigger created. dex@ORCL> insert into t values (-2) ; 1 row created. dex@ORCL> commit ; Commit complete. dex@ORCL> select * from t ; N ---------- 0
------解决方案--------------------
触发器 比较基本的语句
------解决方案--------------------
如果当前表数据量比较小的话可以考虑触发器,如果数据量大,触发器是相当影响效率的,你可以在插入时候用一下判断
insert into A values(decode(sign(salary - 0),1,salary,-1,0,0))
差不多就这个意思,自己动手试一下