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;

Oracle数据库中,实现主键字段的自功能有几种方法。首先,可以使用序列和触发器的方式来手动实现自功能。通过创建一个序列对象,然后在插入数据时使用触发器来获取序列的下一个值作为主键字段的值,从而实现主键的自。这种方式适用于所有版本的Oracle数据库。 另外,从Oracle 12c开始,引入了IDENTITY列,它是一种自动递的主键字段。通过在创建表时,将主键字段定义为IDENTITY列,Oracle会自动为该字段生成唯一的自值。使用IDENTITY列可以简化自字段的实现,特别适用于Oracle 12c及以上版本的数据库。 综上所述,你可以通过使用序列和触发器的方式来手动实现主键字段的自,也可以在Oracle 12c及以上版本中使用IDENTITY列来简化自字段的实现。具体选择哪种方法取决于你使用的Oracle数据库版本以及实际需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Oracle 数据库实现主键字段自的方法](https://blog.youkuaiyun.com/pleaseprintf/article/details/131532655)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值