日期:2014-05-17 浏览次数:20859 次
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))
差不多就这个意思,自己动手试一下