您的位置:首页 > 数据库 > Oracle

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

2016-11-15 13:41 309 查看
create or replace trigger ChangeMessageSequenceTrigger  

    before insert on MESSAGEINFORMATION  

    for each row  

    declare  

        message_num messageinformation.messagenum%type;  

    begin  

        select messageinformation_sequence.nextval into   

            message_num from dual;  

        if :new.messagenum is null then  

            :new.messagenum := message_num;  

        end if;  

    end;  

    /  



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

:new代表刚刚执行的新插入的行,这个是系统变量,不是一个占位符。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: