`

oracle表中怎么建序列

阅读更多
在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。 
1、Create Sequence 
你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限, 
CREATE SEQUENCE emp_sequence 
     INCREMENT BY 1   -- 每次加几个 
     START WITH 1     -- 从1开始计数 
     NOMAXVALUE       -- 不设置最大值 
     NOCYCLE          -- 一直累加,不循环 
     CACHE 10; 

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

可以使用sequence的地方: 
- 不包含子查询、snapshot、VIEW的 SELECT 语句 
- INSERT语句的子查询中 
- NSERT语句的VALUES中 
- UPDATE 的 SET中   

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

SELECT empseq.currval      FROM DUAL; 

但是要注意的是: 
- 第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。一次NEXTVAL会增加一次SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就是不一样的。明白? 

- 如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再取一组到cache。 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。 

2、Alter Sequence 
你或者是该sequence的owner,或者有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数.如果想要改变start值,必须 drop   sequence 再 re-create . 
Alter sequence 的例子 
ALTER SEQUENCE emp_sequence 
     INCREMENT BY 10 
     MAXVALUE 10000 
     CYCLE     -- 到10000后从头开始 
     NOCACHE ; 


影响Sequence的初始化参数: 
SEQUENCE_CACHE_ENTRIES =设置能同时被cache的sequence数目。  

可以很简单的Drop Sequence 
DROP SEQUENCE order_seq;
分享到:
评论

相关推荐

    oracle 建表 建序列

    #### 二、Oracle创建序列及其应用示例 序列是一种自动递增或递减的数字对象,通常用于生成唯一的标识符。下面将详细介绍创建序列的方法及应用实例。 ##### 创建序列示例 ```sql CREATE SEQUENCE id INCREMENT BY ...

    ORACLE生成所有表对应的序列

    以下是一个简单的示例,展示如何获取所有表名并为每个表创建序列: ```sql DECLARE CURSOR c_tables IS SELECT table_name FROM user_tables; seq_name VARCHAR2(30); BEGIN FOR table_rec IN c_tables LOOP ...

    oracle 创建id主键序列 脚本

    在Oracle数据库中,主键是表的一个重要组成部分,它用于唯一标识表中的每一行记录。在许多业务场景中,我们通常需要一个自增的序列来作为主键,以确保数据的唯一性和顺序性。Oracle数据库提供了序列(Sequences)...

    Oracle 创建和使用序列

    --创建序列 create sequence seq_user start with 1 increment by 1 nomaxvalue cache 10; --使用序列 insert into user_table(user_id,user_name,user_pwd) vlaues(seq_user.nextval,'tcy','tcy'); --修改...

    oracle实验9-10-索引与视图-序列和同义词的创建.doc

    4. 创建序列和同义词,并演示如何应用它们。 五、实验结果 通过本实验,我们掌握了索引、视图、序列和同义词的创建和应用,并理解了它们在数据库中的作用。这些技术可以提高数据库的性能和安全性,并简化数据管理...

    oracle 创建触发器 创建序列.txt

    oracle 创建序列 完整步骤

    Oracle数据库中序列的使用

    这种特性使得序列在很多应用场景中都极为重要,比如为表中的记录自动分配唯一标识符(如主键)。本文将详细介绍Oracle数据库中序列的创建、修改以及删除方法,并通过一个具体的示例来演示序列的使用。 #### 序列的...

    Oracle中创建表,创建序列,创建自增字段,添加注释, 添加记录,添加触发器,提交

    Oracle 中创建表、序列、自增字段、添加注释、添加记录、添加触发器、提交的知识点总结 Oracle 中创建表是指在 Oracle 数据库中创建一个新的表结构,以存储特定的数据。在创建表时,需要指定表的名称、字段名称、...

    轻松掌握oracle数据库开发中序列的使用

    创建序列的基本语法是`CREATE SEQUENCE [user.]sequence_name [INCREMENT BY n] [START WITH n] [MAXVALUE n | NOMAXVALUE] [MINVALUE n | NOMINVALUE]`。例如: - `INCREMENT BY n` 指定序列每次递增或递减的步长...

    oracle 不用新建序列 重置序列(从1开始增长)

    在Oracle中,通常的做法是创建一个新的序列,但这可能会带来额外的管理工作,尤其是在频繁需要重置序列的场景下。 本文将详细介绍如何在不新建序列的情况下,实现Oracle序列的重置,让其从1开始增长。这种方法通过...

    创建Oracle触发器用于表中序列值自增长(Helloblock写作)

    通过上述步骤,我们成功地实现了Oracle数据库中表的一个字段自增长的功能。这种方法不仅简化了开发过程中的编码工作,还提高了数据的完整性和安全性。在实际应用中,根据不同的需求,可以进一步调整序列和触发器的...

    oracle索引、序列和权限设置

    在Oracle数据库管理中,索引、序列和权限设置是三个非常关键的概念,它们分别用于提高数据检索速度、自动生成唯一序列值以及控制数据库资源的访问权限。以下是对这些概念的详细解析,基于提供的实验内容: ### 一、...

    oracle快速批量生成表和触发器和序列.zip

    使用`CREATE SEQUENCE`语句可以创建序列,可以指定初始值、增长步长、是否循环等属性。批量生成序列意味着为多个表创建独立的序列,以确保每个表的主键都有唯一的值来源。 在实际操作中,你可以通过以下步骤批量...

    powerdesigner创建oracle_数据库表,设置表主键列为自动增长

    2. **手动创建序列:** - 在PowerDesigner左侧的项目树中,找到`Sequences`节点。 - 右键点击`Sequences`节点,选择`New`。 - 在弹出的`Sequence Properties`对话框中,按照上述步骤设置序列的属性。 - 完成后...

    Oracle数据库表序列ID自增生成器

    创建序列的基本语法如下: ```sql CREATE SEQUENCE sequence_name START WITH start_value INCREMENT BY increment_value MINVALUE min_value MAXVALUE max_value CYCLE | NOCYCLE CACHE cache_size NOCACHE...

    oracle创建表创建唯一索引

    在Oracle数据库管理系统中,创建表和唯一索引是数据库设计中的关键步骤,它们对于数据的组织、查询效率和数据完整性至关重要。以下将详细介绍如何创建学员信息表,创建唯一索引,以及如何修改表来添加主键和检查约束...

    oracle 如何创建序列代码

    oracle 如何创建序列,使用数据库命令如何创建,绝对好用

    批量修改Oracle序列值的存储过程

    在Oracle数据库中,序列(Sequences)是一种自动递增或递减的数字生成器,常用于主键生成或者自增字段。批量修改Oracle序列值的需求可能出现在数据迁移、恢复或测试环境中,确保序列与实际数据匹配。这篇博客分享的...

    java通过Mysql实现类似oracle序列功能序列.rar

    在Oracle数据库中,序列是一种非常重要的工具,它用于生成唯一的整数序列,通常用作主键。然而,MySQL数据库并没有内置的序列功能。在Java应用程序中,如果需要在MySQL环境中实现类似Oracle序列的功能,我们需要自己...

    oracle创建表空间、表、主键、外键、序列

    创建序列的语法如下: ```sql CREATE SEQUENCE 序列名 START WITH 初始值 INCREMENT BY 增量 MINVALUE 最小值 MAXVALUE 最大值 CYCLE/CACHE 缓存大小; ``` 创建一个名为`EMP_SEQ`的序列,起始值为1,每次增加1: `...

Global site tag (gtag.js) - Google Analytics