oracle中插入数据时自动生成主键的触发器

来源:互联网 发布:知乎如何发问题日志 编辑:程序博客网 时间:2024/04/30 05:43
  1. create or replace trigger ChangeMessageSequenceTrigger  
  2.     before insert on MESSAGEINFORMATION  
  3.     for each row  
  4.     declare  
  5.         message_num messageinformation.messagenum%type;  
  6.     begin  
  7.         select messageinformation_sequence.nextval into   
  8.             message_num from dual;  
  9.         if :new.messagenum is null then  
  10.             :new.messagenum :message_num;  
  11.         end if;  
  12.     end;  
  13.     /  

需要注意的是,其中的生成序列的值要从dual这个表中查询,一般当SELECT 语句的目标内容不是表中内容时,为了结构的完整性,用DUAL表充当。你也可以用自己的表来查询试试,会发现生成的序列值不对。


:new代表刚刚执行的新插入的行,这个是系统变量,不是一个占位符。


0 0
原创粉丝点击