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


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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值