利用序列产生主键值

上传人:油条 文档编号:33220261 上传时间:2018-02-14 格式:DOC 页数:3 大小:31.50KB
返回 下载 相关 举报
利用序列产生主键值_第1页
第1页 / 共3页
利用序列产生主键值_第2页
第2页 / 共3页
利用序列产生主键值_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《利用序列产生主键值》由会员分享,可在线阅读,更多相关《利用序列产生主键值(3页珍藏版)》请在金锄头文库上搜索。

1、利用序列产生主键值。 序列(Sequence)是一种可以被多个用户使用的用于产生一系列唯一数字的数据库对象。序列定义存储在数据字典中,通过提供唯一数值的顺序表来简化程序设计工作,可以使用序列自动产生主键的键值。当一个序列第一次被查询调用时,它将返回一个预定值。在随后的每次查询中,序列将产生一个按指定的增量增长的值。序列可以循环,或者是连续增加的,直到指定的最大值为止。 创建序列语法如下:create sequence 模式序列名称start with 起始数字 increment by 增量maxvalue 最大值|nomaxvalueminvalue 最小值|nominva luecycle

2、|nocuylecache 数目|nocacheorder|noorder。 通过序列起始数字、最大值、最小值和增量值可以确定序列是增序还是减序,每次增或减的多少。Nocyle 选项用于确定在序列达到最大值(增序列)或最小值(减序列)之后不能再产生更多的值,用以防止序列回转。 在 Oracle 数据库中创建序列,在使用 sql 语句向数据库中写入数据的时候,利用序列产生的唯一值,实现表中主键值自增。例如: 1. SQLcreate table tablename 2. 3. (id number notnull,);4. 5. 6. SQL create sequence autoID inc

3、rement by 1 start with 1 maxvalue 999999 cycle; 7. 8. 9. SQL insert into tablename values(autoID.nextval,.); 多个用户可以共用一个序列,但它是针对所有的表,因此产生的序号对一个表而言产生的主键值唯一但是不连续。 使用触发器产生主键值。 在数据表中,有时候需要主键值自动增加,但在 Oracle 数据库中,没有象Mysql 的 Autoincrement 一样自动增长的数据类型。在实现 Oracle 数据库字段自增功能时,利用 DML 触发器来完成。 触发器(trigger)是一些过程,当发

4、生一个特定的数据库事件时就执行这些过程,可以使用触发器扩充引用的完整性。DML 即数据操纵语言,用于让用户或程序员使用,实现对数据库中数据的操作。基本的数据操作分成两类四种:检索(查询)和更新(插入、删除、修改)。触发器类似于函数和过程,其在数据库中以独立身分存在。触发事件可以是对数据库表的 DML(insert、update 或delete)操作等。DML 触发器是目前最广泛使用的一种触发器,即由 DML 语句激发的触发器,并有该语句决定 DML 触发器的类型。其触发事件包括insert(插入)、update(更新)和 delete(删除)。无论哪种触发事件,都能为每种触发事件创建 befo

5、re 触发器和 after 触发器。如可以在表上建立一个before insert 语句,表示在 insert 事件发生之前采取行动。 创建触发器的语法如下:1. createor replacetrigger 触发器名称 2. 3. before|after|instead of激发触发事件 4. 5. referencing_clause 6. 7. WHEN trigger_condition 8. 9. FOR EACH ROW referencing_clause 用来引用正在处于修改状态下的行中的数据,如果在 WHEN子句中指定 trigger_condition 的话,则首先对该

6、条件求值。触发器主体只有在该条件为真值时才运行。利用触发器与序列相结合,可以实现在进行 DML 操作的时候,使表中主键值自动增加。其实现步骤可参照如下例子。查询数据:select * from book; 当需要对 book 数据库表中的主键值进行写值时,便可以使用 sql 语句利用序列+触发器实现主键值自动增加.1. drop table book; 2. -创建表 3. create table book( 4. bookId varchar2(4) primary key, 5. name varchar2(20) 6. ); 7. -创建序列 8. create sequence bo

7、ok_seq start with 1 increment by 1; 9. 10.-创建触发器 11.create or replace trigger book_trigger 12.before insert on book 13.for each row 14.begin 15.select book_seq.nextval into :new.bookId from dual; 16.end ; 17.-添加数据 18.insert into book(name) values (cc); 19.insert into book(name) values (dd); 20. mit;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号