Oracle表自增

简介:
 
步骤1. 创建表、设置非空、主键 
CREATE  TABLE example(
                         ID Number(4)  NOT  NULL  PRIMARY  KEY,
                          NAME  VARCHAR(25),
                         PHONE  VARCHAR(10),
                         ADDRESS  VARCHAR(50)

                    );
步骤2. 设置为自增,且设定步长
CREATE SEQUENCE emp_sequence
                    INCREMENT  BY 1  -- 每次加几个
                    START  WITH 1  -- 从1开始计数
                    NOMAXVALUE  -- 不设置最大值
                    NOCYCLE  -- 一直累加,不循环
                    NOCACHE  -- 不建缓冲区
 以上代码完成了一个序列(sequence)的建立过程,名称为emp_sequence,范围是从1开始到无限大(无限大的程度是由你机器决定的),nocycle 是决定不循环,如果你设置了最大值那么你可以用cycle 会使seq到最大之后循环.对于nocache顺便说一下如果你给出了cache值那么系统将自动读取你的cache值大小个seq,这样在反复操作时会加快运行速度,但如果遭遇意外情况如当机了或oracle死了,则下次取出的seq值将和上次的不连贯.(如果连不连贯无所谓建议用cache,因为时间就是金钱呀!)
 
步骤3.  你只有了表和序列还不够,还需要一个触发器来执行它!
CREATE  TRIGGER "触发器名称" BEFORE
                     INSERT  ON example  FOR EACH ROW  WHEN (new.id  is  null)
             begin
                     select emp_sequence.nextval  into: new.id  from dual;
              end;
打完收工!下面你就试试插入数据吧! INSERT INTO example(Name,phone,address) Values('ma','1234567','shanghai');
 
 
创建表
 
  1. SQL> create table address(addressId integer not null primary key, province varchar(20),community varchar(20), street var 
  2. char(20), houseNumber integer); 
  3.  
  4. 表已创建。 
创建序列
 
  1. SQL> CREATE SEQUENCE addr_seq 
  2.   2                      INCREMENT BY 1 -- 每次加几个 
  3.   3                      START WITH 1 -- 从1开始计数 
  4.   4                      NOMAXVALUE -- 不设置最大值 
  5.   5                      NOCYCLE -- 一直累加,不循环 
  6.   6                      NOCACHE -- 不建缓冲区 
  7.   7  ; 
  8.  
  9. 序列已创建。 
 
创建触发器
 
  1. SQL> CREATE TRIGGER "addr_trigger" BEFORE 
  2.   2                      INSERT ON address FOR EACH ROW WHEN (new.addressId is null
  3.   3              begin 
  4.   4                      select addr_seq.nextval into :new.addressId from dual; 
  5.   5               end
  6.   6  / 
  7.  
  8. 触发器已创建 
 
 
 本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/252665,如需转载请自行联系原作者
相关文章
|
存储 SQL Oracle
Oracle数据库批量删除表、视图、序列、存储过程、函数脚本
Oracle数据库批量删除表、视图、序列、存储过程、函数脚本
296 0
|
Oracle 关系型数据库 数据库
Oracle查询优化-复制表的定义及数据
【1月更文挑战第5天】【1月更文挑战第14篇】在Oracle数据库中,复制表定义和复制表数据是两个常见的操作。
233 1
|
Oracle 关系型数据库 MySQL
Oracle与MySQL的主键自增方式
Oracle与MySQL的主键自增方式
|
消息中间件 关系型数据库 Kafka
实时计算 Flink版产品使用合集之oracle cdc 抽取新增一张表 可以从savepoint恢复吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
117 0
|
Oracle 关系型数据库 Java
mybatis使用statement.getGenreatedKeys(); useGeneratedKeys=”true”;使用自增主键获取主键值策略和Oracle不支持自增,Oracle使用序列
mybatis使用statement.getGenreatedKeys(); useGeneratedKeys=”true”;使用自增主键获取主键值策略和Oracle不支持自增,Oracle使用序列
171 9
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用问题之oracle无主键的表支持同步吗如何实现
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
运维 DataWorks Oracle
DataWorks产品使用合集之在标准模式下,当同步Oracle的表或视图时,是否需要在源端的测试和生产环境中都存在要同步的表或视图
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
125 3
|
SQL 存储 Oracle
Oracle数据库中日期的操作、主键自增与分页查询
Oracle数据库中日期的操作、主键自增与分页查询
198 0
|
资源调度 Oracle 关系型数据库
实时计算 Flink版产品使用合集之同步Oracle数据时,一张表产生了大量的连接数,如何处理
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之如何获取 Oracle 自增 ID
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。