oracle中自增的几个办法

1.Oracle上没有自增字段,可以使用索引和触发器来达到此目的  
sql>create table articletype(id number primary key,name varchar2(30));
sql>create sequence seq_aritcle_id increment by 1 start with 1 maxvalue 999999999;
sql>create trigger trg_articletype_id
    before insert
    on articletype
    for each row
    begin
    select seq_articletype_id.nextval into :new.id
    from dual;
    end;
    /

注:

dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录。我们可以用它来做很多事情,如下:

1、查看当前用户,可以在 SQL Plus中执行下面语句

select user from dual;

2、用来调用系统函数

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;--获得当前系统时间

select SYS_CONTEXT('USERENV','TERMINAL') from dual;--获得主机名

select SYS_CONTEXT('USERENV','language') from dual;--获得当前locale

select dbms_random.random from dual;--获得一个随机数

3、得到序列的下一个值或当前值,用下面语句

select your_sequence.nextval from dual;--获得序列your_sequence的下一个值

select your_sequence.currval from dual;--获得序列your_sequence的当前值

4、可以用做计算器

select 7*9 from dual;

 


方法2,create   or   replace   trigger   trdemo  
  before   insert   on   t_name

  for each row   
  ln   number;    
  begin  
  select   max(id)   into   ln   from   t_name;  
  :new.id:=ln+1;  
  end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值