`

实现Oracle数据库的自增主键

阅读更多

将表t_uaer的字段ID设置为自增:(用序列sequence的方法来实现)

----创建表
Create table t_user(
Id number(6),userid varchar2(20),loginpassword varchar2(20),isdisable number(6)
);

----创建序列
create sequence user_seq
increment by 1
start with 1
nomaxvalue
nominvalue
nocache

----创建触发器
create or replace trigger tr_user
before insert on t_user
for each row
begin
select user_seq.nextval into :new.id from dual;
end;

----测试
insert into t_user(userid,loginpassword, isdisable)
values('ffll','liudddyujj', 0);
insert into t_user(userid,loginpassword, isdisable)
values('dddd','zhang', 0)
select * from t_user;
就可以看出结果。

***********************************************************************
对sequence说明:
increment by :用于指定序列增量(默认值:1),如果指定的是正整数,则序列号自动递增,如果指定的是负数,则自动递减。
start with :用于指定序列生成器生成的第一个序列号,当序列号顺序递增时默认值为序列号的最小值 当序列号顺序递减时默认值为序列号的最大值。
Maxvalue:用于指定序列生成器可以生成的组大序列号(必须大于或等于start with,并且必须大于minvalue),默认为nomaxvalue。
Minvalue:用于指定序列生成器可以生成的最小序列号(必须小于或等于starr with,并且必须小于maxvalue),默认值为nominvalue。
Cycle:用于指定在达到序列的最大值或最小值之后是否继续生成序列号,默认为nocycle。
Cache:用于指定在内存中可以预分配的序列号个数(默认值:20)。
在sequence中应注意:
1、 第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。一次NEXTVAL会增加一次SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就是不一样的。
2、 如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再取一组到cache。 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。


本文来自CSDN博客,转载:http://blog.csdn.net/tancaiyi/archive/2009/04/01/4040289.aspx

分享到:
评论

相关推荐

    Oracle建立自增主键

    Oracle建立自增主键,在方便我们设置主键等开发oracle数据库

    Oracle数据库中创建自增主键的实例教程

    在设计数据库表的时候发现Oracle没有自增主键的设置,Google了解到Oracle本身并不支持自增主键,需要通过序列(Sequence)和触发器(Trigger)实现。 创建表Student Create Table Student( id number(12) primary ...

    oracle主键自增

    oracle 数据库主键自增脚本 --第一步,创建表 --第二步,创建自增序列 --第三步,创建触发器

    oracle数据库主键自增并且返回主键值

    一、创建序列 1.1、直接在PLSQL中设置 1.2、命令创建 create sequence seq_users ##创建序列seq_users increment by 1 ## 步长,每次加1 start with 1 ##从1开始 minvalue 1 ##最小值 maxvalue 9999999 ##最大值 ...

    创建oracle数据库中表的主键和自增

    在oracle中可以利用触发器创建自增,从而完成我们像在sql server与mysql中定义的主键自增的功能。从而方便我们的开发

    mybatis自增主键文档

    mybatis进行插入操作时,如果表的主键是自增的,...基本上经常会遇到的就是 Oracle Sequece 和 Mysql 自增主键,至于其他的手动生成唯一主键的问题在这里就不讨论了,这里主要说明下在mybatis中对于自增主键的配置。

    powerdesigner创建oracle_数据库表,设置表主键列为自动增长

    ( 使用powerdesigner创建oracle_数据库表,设置表主键列为自动增长.doc )

    Oracle数据库创建表tuser设置主键自动增长

    Oracle数据库创建表tuser设置主键自动增长,先创建表,然后创建基于该表的队列。

    最新Mybatis插入数据返回自增主键详细配置

    Mybatis插入数据返回自增主键 Mybatis插入数据以后只会返回影响的数据库行数,如果是插入一条数据成功则返回1,失败返回零,插入多条返回插入成功的数量。 通过注解或者xml配置无法直接返回自增的主键。Mybatis插入...

    oracle 主键自增相关命令

    初学者用,在建立数据库的时候想要让主键ID自增。看过本文档你就一清二楚了

    oracle迁移mysql自增序列问题

    今天从oracle迁移数据到mysql碰到个需求:原先的主键字段需要改成mysql中的自增字段,而且原先数据的值不能变,以后新插入的值从原先数据最大的值开始自增。 解决办法: 构建环境: mysql> CREATE TABLE test -> ( ...

    oracle主键自动增长

    oracle数据库中主键属性没有自增长,所以只能自己写程序来实现,用序列与触发器,可以解决这个 问题

    【总结】数据库自增字段的 3 种实现方式

    我们今天的主题就是自增字段的实现,下表列出了主流数据库中创建自增字段的几种方法: 自增字段实现方式 MySQL Oracle SQL Server PostgreSQL SQLite 标识列(IDENTITY) — :check_mark: :check_mark: :...

    Oracle数据库表序列ID自增生成器

    Oracle数据库表序列ID自增生成器的功能是为数据库中的表添加序列和触发器,以便使数据表的主键ID能够随着记录的增加而自动增加。

    oracle表的id自增sql

    oracle 数据库建表id自增的sql语句创建sequence的名称,S_out_gold这个为

    Oracle 创建主键自增表示例代码

    我们经常在设计数据库的时候用一个系统自动分配的ID来作为我们的主键,但是在Oracle没有自增主键的设置,我们可以通过这篇文章介绍的方法实现,有需要的朋友们可以参考借鉴,下面来一起看看吧。

    oracle数据库创建表相关知识

    Oracle创建主键自增表,Oracle的基本操作+Oracle字段类型,命名规则和注意事项

    Oracle建表语句demo(建表语句、索引、序列)

    完整性展示:DEMO提供了从基础建表到复杂约束(如外键、自增主键)等实际生产场景所需的完整SQL语句。 学习价值:对于初学者或者对Oracle数据库不熟悉的开发者来说,这是一个很好的实践教程,可以直接参照执行并...

Global site tag (gtag.js) - Google Analytics