zoukankan      html  css  js  c++  java
  • 在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

  • 相关阅读:
    比特币脚本及交易分析
    分析比特币网络:一种去中心化、点对点的网络架构
    比特币如何挖矿(挖矿原理)-工作量证明
    比特币所有权及隐私问题-非对称加密应用
    区块链记账原理
    用Python从零开始创建区块链
    基础语法-算术运算符
    基础语法-数据类型转换
    基础语法-数据类型介绍及使用
    基础语法-变量介绍
  • 原文地址:https://www.cnblogs.com/yichengbo/p/2140601.html
Copyright © 2011-2022 走看看