博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle表自增
阅读量:6575 次
发布时间:2019-06-24

本文共 1408 字,大约阅读时间需要 4 分钟。

 
步骤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,如需转载请自行联系原作者
你可能感兴趣的文章
使用 sessionStorage 创建一个本地存储的 name/value
查看>>
POJ2127 LICS模板
查看>>
Python笔记8----DataFrame(二维)
查看>>
JavaScript 特殊效果代码
查看>>
【?】codeforces721E Road to Home(DP+单调队列)
查看>>
MySQL 仅保留7天、一个月数据
查看>>
OGG 11g Checkpoint 详解
查看>>
PHP中使用socket通信响应速度慢的原因与解决办法
查看>>
Win7下安装Mysql(解压缩版)
查看>>
UVA 11992 Fast Matrix Operations (降维)
查看>>
Asp.net core Identity + identity server + angular 学习笔记 (第一篇)
查看>>
暂时不想读研的几点理由
查看>>
增加临时表空间组Oracle11g单实例
查看>>
Diff Two Arrays
查看>>
stark组件(1):动态生成URL
查看>>
169. Majority Element
查看>>
下拉菜单
查看>>
[清华集训2014]玛里苟斯
查看>>
Doctype作用?严格模式与混杂模式如何区分?它们有何意义
查看>>
【MVC+EasyUI实例】对数据网格的增删改查(上)
查看>>