在oracle中插入一条数据,id自动增长,插入之后怎么得到这个id(sequence的使用)

首先,我对这个问题做一个进一步的描述,问题是这样的:

在oracle中有一个表id是自动增长的,插入一条记录后,我怎样能获取到这个id呢,前提是,这个表中只有id能唯一标识这一行,其他字段都不行,而自动增长的id我又不知道他是多少,如何得到这个id的值呢。

首先我想到的是用max(rownum)获取,但是这个是不行的,因为这个表有多个人操作,也就是说我在添加一条记录的同时不能保证其他人是否也同时添加了几条记录,我无法保证表中我添加的这条记录是最新的,所以就得想别的办法。

介绍一下sequence(序列),这个可以解决我所描述的这个问题。、

首先要创建一个sequence: create sequence  序列名

                                   increment   by  n  //每次增加几

                                   start   with  n  //从几开始

                                   maxvalue      n | nomaxvalue 
                                   minvalue      n | nominvalue;

例如:create sequence emp_sequence   minvalue 1000 maxvalue 99999999 start with 1000 increment by 1 nocache;

一旦定义了emp_sequence,你就可以用CURRVAL,NEXTVAL 
    CURRVAL=返回sequence的当前值 
    NEXTVAL=增加sequence的值,然后返回sequence值 
    比如: 
        emp_sequence.CURRVAL 
        emp_sequence.NEXTVAL

可以看如下例子: 
    INSERT INTO emp VALUES 
    (empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20);

SQL中取序列号的用法: 
SELECT NCME_QUESTION_SEQ.nextval FROM dual 
SELECT NCME_QUESTION_SEQ.CURRVAL FROM dual

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值