知识大全 oracle数据库如何创建自增列的技巧教程
Posted 语句
篇首语:历史和哲学负有多种永恒的责任,同时也是简单的责任。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 oracle数据库如何创建自增列的技巧教程相关的知识,希望对你有一定的参考价值。
Oracle没有自增字段这样的功能 但是通过触发器(trigger)和序列(sequence)可以实现
先建一个测试表了
create table userlogin (
id number( ) not null
name varchar ( ) not null primary key
)
tablespace users
第一步 创建SEQUENCE
create sequence userlogin_seq increment by start with minvalue maxvalue nocache order;
第二步 创建一个基于该表的before insert 触发器 在触发器中使用刚创建的SEQUENCE
create or replace trigger userlogin_trigger before insert on userlogin for each row begin select userlogin_seq nextval into:new id from sys dual ; end;
第三步 在userlogin表中测试
写个insert语句 插入一条记录 看ID字段自增了没 自增则OK啦
oracle没有ORACLE自增字段这样的功能 但是通过触发器(trigger)和序列(sequence)可以实现
先建一个测试表了
create table userlogin (
id number( ) not null
name varchar ( ) not null primary key
)
tablespace users
/
第一步 创建SEQUENCE
create sequence userlogin_seq increment by start with minvalue maxvalue nocache order;
第二步 创建一个基于该表的before insert 触发器 在触发器中使用刚创建的SEQUENCE
create or replace trigger userlogin_trigger before insert on userlogin for each row begin select userlogin_seq nextval into:new id from sys dual ; end;
/
第三步 在userlogin表中测试
写个insert语句 插入一条记录 看ID字段自增了没 自增则OK啦
Oracle序列知识
在oracle中sequence就是所谓的序列号 每次取的时候它会自动增加 一般用在需要按序列号排序的地方 Create Sequence 你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限 CREATE SEQUENCE emp_sequence INCREMENT BY 每次加几个 START WITH 从 开始计数 NOMAXVALUE 不设置最大值 NOCYCLE 一直累加 不循环 CACHE ;
一旦定义了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 SYSDATE NULL );
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防止这种情况
Alter Sequence 你或者是该sequence的owner 或者有ALTER ANY SEQUENCE 权限才能改动sequence 可以alter除start至以外的所有sequence参数 如果想要改变start值 必须 drop sequence 再 re create Alter sequence 的例子 ALTER SEQUENCE emp_sequence INCREMENT BY MAXVALUE CYCLE 到 后从头开始 NOCACHE ;
影响Sequence的初始化参数 SEQUENCE_CACHE_ENTRIES =设置能同时被cache的sequence数目
cha138/Article/program/Oracle/201311/19077相关参考
(这几天做了个小小课程设计时用的是oracle数据库第一次用发现oracle和我们以前用的sqlservermysql是有如此多不同的地方下面是遇到的问题之一和解决方法和大家分享下) 用惯sql
Oracle使用触发器实现自增ID 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! userinf
Oracle创建数据库的手工方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Oracle数据
Oracle10i数据库创建过程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Oraclei数
在Oracle中合理创建数据库的索引 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在Oracl
个人经验总结:Oracle10g手工创建数据库 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 创
创建Oracle10gASM数据库 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!概述 在真正的海
多个Oracle数据库创建一个Excel报表 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 微软
手动创建Oracle数据库之前因后果 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 对于许多数据
知识大全 在单机上创建物理Oracle数据库9istandby
在单机上创建物理Oracle数据库9istandby 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!