oracle 自增列

由于Oracle不像SQL Server 那样系统自带自增列,所以如果需要使用自增列或者把SQL Server中的数据导入时,就需要自己创建自增列

Oracle的自创自增类由序列(sequence)和触发器(trigger)共同完成,所以需要创建一个序列和触发器

/*创建自增列(由序列和触发器共同完成)*/

/*创建序列*/
create sequence s_id increment by 1 start with 1 nomaxvalue nocycle;
/*创建触发器*/
create or replace trigger myTrigger
  before insert on myTable
  referencing old as old_value new as new_value
  for each row  
begin  
  new_value.userid= s_id.nextval;  
end;  

cata0是表名,cata0_id是需要自增的字段!
CREATE SEQUENCE SEQ_cata0
INCREMENT BY  1
START WITH  1
MAXVALUE  9999999
/
CREATE TRIGGER TRG_cata0 BEFORE
INSERT  ON cata0
FOR EACH ROW begin
   SELECT SEQ_cata0.NEXTVAL
     INTO :NEW.cata0_ID
     FROM DUAL;
End TRG_cata0;

new.cata0_ID在insert触发器中表示的是新增加的cata0_ID的值,new表示新增加的一行数据,如果是针对的是update的触发器还有old, old表示的是更新前的一行数据,new表示的是更新后的一行数据,old.cata0_ID表示更新前cata0_ID的值,new.cata0_ID表示更新后cata0_ID的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值