Oracle的sequence

简介:   概述  Oracle的sequence,就是序列号,它提供一系列的按照事先指定的方式进行增长的数字。oracle sequence的最大值是38个整数。【 Sequences are database objects from which multiple users can generate unique integers.】。一般来说,sequence常用于生成数据库的主键。  Oracle将sequence的定义存储在数据字典之中,因此,所有的sequence都在数据库的SYSTEM表空间里面。

  概述

  Oracle的sequence,就是序列号,它提供一系列的按照事先指定的方式进行增长的数字。oracle sequence的最大值是38个整数。【 Sequences are database objects from which multiple users can generate unique integers.】。一般来说,sequence常用于生成数据库的主键。

  Oracle将sequence的定义存储在数据字典之中,因此,所有的sequence都在数据库的SYSTEM表空间里面。

  引用sequence的当前值使用CURRVAL,而生成sequence的下一个值使用NEXTVAL来实现。初始化一个刚刚新建的sequence使用NEXTVAL,它会返回新sequence的第一值。另外还要注意,在一个全新的会话中,使用CURRVAL之前必须至少使用一次NEXTVAL。

  sequence是独立于表的,也就是说一个sequence可以同时被多个表使用来生成主键。

  sequence是独立于事务的,就是说序列的增加不需要等待事务的完成,也就是说二手游戏账号拍卖序列是异步于事务而增长的。这种现象就说明,如果你根本访问不了别的用户用sequence产生的值,也就是说你只能访问到你当前产生的值,即使其他用户已经增加了sequence的值;还说明如果你事务回滚,sequence不会回滚,它所发生的改变是一维的。请看一个例子:

  -- session 1

  SQL> select distinct sid from v$mystat;

  SID

  ----------

  147

  SQL> create sequence seqtest;

  Sequence created.

  SQL> select seqtest.nextval from dual; -- 第一次初始化sequence

  NEXTVAL

  ----------

  1

  SQL> select seqtest.nextval from dual;

  NEXTVAL

目录
相关文章
|
6月前
|
SQL Oracle 关系型数据库
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作
138 0
|
缓存 Oracle 关系型数据库
使用序列(Sequence)在 Oracle 数据库中管理唯一标识符
使用序列(Sequence)在 Oracle 数据库中管理唯一标识符
199 0
|
缓存 Oracle 关系型数据库
Sequence在Oracle中的使用
Sequence在Oracle中的使用
103 0
|
SQL XML Oracle
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作(下)
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作(下)
|
SQL XML Oracle
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作(中)
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作(中)
|
SQL Oracle 关系型数据库
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作(上)
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作(上)
|
Oracle 关系型数据库
Oracle创建Sequence时Order/NoOrder选项
Oracle创建Sequence时Order/NoOrder选项
307 0
|
SQL Oracle 关系型数据库
MySQL模拟Oracle序列sequence
DROP TABLE IF EXISTS sys_sequence ; CREATE TABLE sys_sequence (   seq_name VARCHAR (50) NOT NULL,   curr_value BIGINT NOT NULL DEFAULT 0,   in...
2257 0