有时候有些特殊的需求,比如如果某字段输入的值是A开头的,都禁止他输入。这个时候我们都知道要用触发器来实现,但是如何给出一个良好的报错呢?

 

 

 
  
  1. create or replace trigger codeadmin.trg_code_input_s 
  2.  
  3. before insert or update on codeadmin.code_input 
  4.  
  5. for each row 
  6.  
  7.   declare 
  8.  
  9.   codeerr exception; 
  10.  
  11. begin 
  12.  
  13.     if upper(substr(:new.securitycode,1,1))='A' then 
  14.  
  15.    raise codeerr; 
  16.  
  17.    end if; 
  18.  
  19.    exception 
  20.  
  21.      when codeerr then 
  22.  
  23.  RAISE_APPLICATION_ERROR(-20123,'代码错误'); 
  24.  
  25. end
  26.  

 

这个触发器可以当输入以A/a开头的值,都被警告ora-20123错误,自动回滚。非常实用。