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