Oracle:序列和主键

来源:互联网 发布:linux 下查看文件大小 编辑:程序博客网 时间:2024/05/29 18:28

–oracle序列和表名没直接对应关系的, 但是可以在表数据插入的时候用 序列名.nextval

①查询数据库所有的序列名称
select * from user_sequences;
②获取表的序列的下一个值
select 序列名.nextval from dual
③获取表的id下一个值
SELECT NVL(MAX(TABLE_ID), 0) + 1 AS tableId FROM IOT_ACM_TABLE;

  1. 主键:
    —表的主键可分别简单主键和组合主键。简单主键为表中的一列,组合主键为表中的几列。
    —主键的生成策略有许多种,其中,序列是Oracle常见的主键生成策略之一。
    —主要的用途是生成表的主键值,序列的创建语法如下:
    CREATE SEQUENCE 序列名
    –[INCREMENT BY n]
    –[START WITH n]
    –[{MAXVALUE/ MINVALUE n|NOMAXVALUE}]
    –[{CYCLE|NOCYCLE}] [{CACHE n|NOCACHE}];
    例如:
    create sequence ESC_USER_ID_SEQ
    minvalue 1
    maxvalue 9999999999999999999999999999
    start with 3926
    increment by 1
    cache 100;

1)我们在INSERT语句中使用序列生成主键,只需要把序列名.NEXTVAL作为值,传递给主键字段就可以了。
2)假如我们想获取这个值,在程序中使用,我们可以通过下面的语句:SELECT 序列名.NEXTVAL FROM DUAL;