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代表刚刚执行的新插入的行,这个是系统变量,不是一个占位符。