在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创建序列及其应用示例 序列是一种自动递增或递减的数字对象,通常用于生成唯一的标识符。下面将详细介绍创建序列的方法及应用实例。 ##### 创建序列示例 ```sql CREATE SEQUENCE id INCREMENT BY ...
以下是一个简单的示例,展示如何获取所有表名并为每个表创建序列: ```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数据库中,主键是表的一个重要组成部分,它用于唯一标识表中的每一行记录。在许多业务场景中,我们通常需要一个自增的序列来作为主键,以确保数据的唯一性和顺序性。Oracle数据库提供了序列(Sequences)...
--创建序列 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'); --修改...
4. 创建序列和同义词,并演示如何应用它们。 五、实验结果 通过本实验,我们掌握了索引、视图、序列和同义词的创建和应用,并理解了它们在数据库中的作用。这些技术可以提高数据库的性能和安全性,并简化数据管理...
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中,通常的做法是创建一个新的序列,但这可能会带来额外的管理工作,尤其是在频繁需要重置序列的场景下。 本文将详细介绍如何在不新建序列的情况下,实现Oracle序列的重置,让其从1开始增长。这种方法通过...
通过上述步骤,我们成功地实现了Oracle数据库中表的一个字段自增长的功能。这种方法不仅简化了开发过程中的编码工作,还提高了数据的完整性和安全性。在实际应用中,根据不同的需求,可以进一步调整序列和触发器的...
在Oracle数据库管理中,索引、序列和权限设置是三个非常关键的概念,它们分别用于提高数据检索速度、自动生成唯一序列值以及控制数据库资源的访问权限。以下是对这些概念的详细解析,基于提供的实验内容: ### 一、...
使用`CREATE SEQUENCE`语句可以创建序列,可以指定初始值、增长步长、是否循环等属性。批量生成序列意味着为多个表创建独立的序列,以确保每个表的主键都有唯一的值来源。 在实际操作中,你可以通过以下步骤批量...
2. **手动创建序列:** - 在PowerDesigner左侧的项目树中,找到`Sequences`节点。 - 右键点击`Sequences`节点,选择`New`。 - 在弹出的`Sequence Properties`对话框中,按照上述步骤设置序列的属性。 - 完成后...
创建序列的基本语法如下: ```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数据库中,序列(Sequences)是一种自动递增或递减的数字生成器,常用于主键生成或者自增字段。批量修改Oracle序列值的需求可能出现在数据迁移、恢复或测试环境中,确保序列与实际数据匹配。这篇博客分享的...
在Oracle数据库中,序列是一种非常重要的工具,它用于生成唯一的整数序列,通常用作主键。然而,MySQL数据库并没有内置的序列功能。在Java应用程序中,如果需要在MySQL环境中实现类似Oracle序列的功能,我们需要自己...
创建序列的语法如下: ```sql CREATE SEQUENCE 序列名 START WITH 初始值 INCREMENT BY 增量 MINVALUE 最小值 MAXVALUE 最大值 CYCLE/CACHE 缓存大小; ``` 创建一个名为`EMP_SEQ`的序列,起始值为1,每次增加1: `...