-- 主键设置:xx_id number(24) primary key

 1 create sequence XX_seq --序列名称
increment by 1 -- 每次加几个
start with 1 -- 从1开始计数
nomaxvalue --NOMAXVALUE -- 不设置最大值
order
nocycle -- 一直累加,不循环
cache 10;
--创建xx表序列
create or replace trigger xx_tg
before insert on xx
for each row
begin
select xx_seq.nextval into :new.xx_id from dual;
end xx_tg;
--创建xx表触发器 --获取当前序列值:
SELECT xx_seq.currval FROM DUAL;

Oracle+序列+触发器=SqlServer+主键自增长

可以使用sequence的地方:

- 不包含子查询、snapshot、VIEW的 SELECT 语句

- INSERT语句的子查询中

- NSERT语句的VALUES中

- UPDATE 的 SET中

可以看如下例子:

INSERT INTO xx VALUES

(xx_seq.nextval, 'aaa');

SELECT xx_seq.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 xx_seq

INCREMENT BY 10

MAXVALUE 10000

CYCLE -- 到10000后从头开始

NOCACHE ;

影响Sequence的初始化参数:

SEQUENCE_CACHE_ENTRIES =设置能同时被cache的sequence数目。

可以很简单的Drop Sequence

DROP SEQUENCE xx_seq;

Oracle实现主键自增长的更多相关文章

  1. Oracle 设置主键自增长__Oracle

    转自:https://yq.aliyun.com/ziliao/258074 如果想在Oracle数据库里实现数据表主键自增,我们似乎没有办法像MySql般直接定义列的属性来实现.不过对于这个数据库的 ...

  2. mybatis配置oracle的主键自增长

    引用自:https://hacpai.com/article/1405392025960 mysql.sqlserver等数据库本身带有主键自增长像auto_increment的功能可以直接使用 us ...

  3. Oracle 设置主键自增长

    如果想在Oracle数据库里实现数据表主键自增,我们似乎没有办法像MySql般直接定义列的属性来实现.不过对于这个数据库的常用功能,我们还是有办法实现的.这里将展示使用触发器来实现主键自增. 1.准备 ...

  4. Oracle设置主键自增长

    第一步:为表设置主键 第二步:新建序列 CREATE SEQUENCE SQ.SEQ_INCREASE  START WITH 12  MAXVALUE 999  MINVALUE 0 INCREME ...

  5. MyBatis+Oracle实现主键自增长的几种常用方式

    一.使用selectKey标签 <insert id="addLoginLog" parameterType="map" > <selectK ...

  6. oracle 主键自动增长

    oracle 主键自动增长 2009-12-11 16:07:00|  分类: 数据库资料|字号 订阅     这几天搞Oracle,想让表的主键实现自动增长,查网络实现如下: create tabl ...

  7. oracle,mybatis主键自增长

    <insert id="insert" parameterType="resource"> <selectKey resultType=&qu ...

  8. 更新oracle数据库表如何实现主键自增长

     在数据库中实现主键自动增长有利于我们做数据插入操作,在SQL SERVER上创建表时可以在int类型的字段后加上identity(1,1),该字段就会从1开始,按照+1的方式自增,将这个字段设置 ...

  9. Mybatis 操作数据库的主键自增长

    本篇文章将研究mybatis 实现oracle主键自增的机制 首先我们看对于同一张student表,对于mysql,sql server,oracle中它们都是怎样创建主键的 在mysql中 crea ...

随机推荐

  1. iOS开发---转换坐标系

    - (void)viewDidLoad { [super viewDidLoad]; // 蓝色 UIView *blue = [[UIView alloc] init]; blue.backgrou ...

  2. 那些必须要知道的Javascript

    原文:那些必须要知道的Javascript JavaScript是前端必备,而这其中的精髓也太多太多,最近在温习的时候发现有些东西比较容易忽略,这里记录一下,一方面是希望自己在平时应用的时候能够得心应 ...

  3. (64位oracle使用32位的PLSQL)安装64位的oracle数据库软件,使用32位的PLSQL Developer连接方法

    因为PLSQL Developer没有提供64位的,于是依据网上的资料做了一下整理,发上来 1.下载并安装Oracle 11g R2 64位,在server上安装时忽略硬件检測失败信息: 2.下载Or ...

  4. openwrt构建过程探索

    参考网站:http://wiki.openwrt.org/doc/howto/buildroot.exigence 需要下载必要的库文件,编译器等... 1 首先要获得openwrt的源码,参考ope ...

  5. windows系统SVN和apache的下载和安装

    原文:windows系统SVN和apache的下载和安装 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://ejb3.blogbus.com/logs/107443052. ...

  6. SuspendLayout()了解方法

     SuspendLayout()暂时挂起的布局逻辑控制(msdn),它ResumeLayout()在会同.我的理解是,使用SuspendLayout()让整个窗体站,等到所有的东西都设置齐全,然后Re ...

  7. QTP知识总结(一)

    QTP知识总结(一) (2010-12-22 16:30:41) 转载▼ 标签: 杂谈 分类: QTP File menu Process guidance management,View > ...

  8. Value Object(值对象)如何使用 EF 进行正确映射

    DDD 领域驱动设计-Value Object(值对象)如何使用 EF 进行正确映射 写在前面 首先,这篇博文是用博客园新发布的 MarkDown编辑器 编写的,这也是我第一次使用,语法也不是很熟悉, ...

  9. beanutils中WrapDynaBean

    public class Emp   { private String  firstName="李";    private String lastName;    public ...

  10. MVC Filter 实现方式和作用范围控制

    Asp.Net MVC Filter 实现方式和作用范围控制 MVC中的Filte 简单又优雅的实现了AOP ,在日志,权限,缓存和异常处理等方面用的比较多.但本文不是讨论Filter这些功能点,而是 ...