oracle中的ID号实现自增长的方法(序列)
2017-09-02 19:27
281 查看
利用序列产生主键值(创建序列用于自增长)。
序列(Sequence)是一种可以被多个用户使用的用于产生一系列唯一数字的数据库对象。序列定义存储在数据字典中,通过提供唯一数值的顺序表来简化程序设计工作,可以使用序列自动产生主键的键值。当一个序列第一次被查询调用时,它将返回一个预定值。在随后的每次查询中,序列将产生一个按指定的增量增长的值。序列可以循环,或者是连续增加的,直到指定的最大值为止。 序列创建之后整个数据库可以共享这个序列。默认自增长的最大值为10的28次方。
-- 使用触发器实现ID递增
-- 创建序列
CREATE SEQUENCE auto;
-- persons_tri 触发器名字
-- person 表名
-- AUTO.nextval AUTO表示刚刚创建的序列
-- personid 表示自增的字段
CREATE TRIGGER persons_tri
BEFORE INSERT ON person
FOR EACH ROW
DECLARE
BEGIN
SELECT AUTO.nextval
INTO :NEW.personid
FROM dual;
END;
序列(Sequence)是一种可以被多个用户使用的用于产生一系列唯一数字的数据库对象。序列定义存储在数据字典中,通过提供唯一数值的顺序表来简化程序设计工作,可以使用序列自动产生主键的键值。当一个序列第一次被查询调用时,它将返回一个预定值。在随后的每次查询中,序列将产生一个按指定的增量增长的值。序列可以循环,或者是连续增加的,直到指定的最大值为止。 序列创建之后整个数据库可以共享这个序列。默认自增长的最大值为10的28次方。
--创建序列语法: CREATE SEQUENCE sequence //创建序列名称 [INCREMENT BY n] //递增的序列值是n 如果n是正数就递增,如果是负数就递减 默认是1 [START WITH n] //开始的值,递增默认是minvalue 递减是maxvalue [{MAXVALUE n | NOMAXVALUE}] //最大值 [{MINVALUE n | NOMINVALUE}] //最小值 [{CYCLE | NOCYCLE}] //循环/不循环 [{CACHE n | NOCACHE}];//分配并存入到内存中 --创建案例: --创建sequence create sequence seq_on_test increment by 1 start with 1 nomaxvalue nocycle nocache; --建表 : drop table test; create table test( ID integer , stu_name varchar2(4) ); --插入数据 : insert into test values(seq_on_test.nextval,'A'); insert into test values(seq_on_test.nextval,'B'); --seq的两个方法 : select seq_on_test.currval from dual; select seq_on_test.nextval from dual; --nextval 返回序列中下一个有效的值,任何用户都可以引用 --currval 中存放序列的当前值 -- nextval 应在 currval 之前指定 ,二者应同时有效 --修改序列 //修改序列的增量, 最大值, 最小值, 循环选项, 或是否装入内存 alter SEQUENCE sequenceName //创建序列名称 [INCREMENT BY n] //递增的序列值是n 如果n是正数就递增,如果是负数就递减 默认是1 [START WITH n] //开始的值,递增默认是minvalue 递减是maxvalue [{MAXVALUE n | NOMAXVALUE}] //最大值 [{MINVALUE n | NOMINVALUE}] //最小值 [{CYCLE | NOCYCLE}] //循环/不循环 [{CACHE n | NOCACHE}];//分配并存入到内存中 修改序列的注意事项: l 必须是序列的拥有者或对序列有 ALTER 权限 l 只有将来的序列值会被改变 l 改变序列的初始值只能通过删除序列之后重建序列的方法实现 --删除序列: l 使用DROP SEQUENCE 语句删除序列 l 删除之后,序列不能再次被引用
-- 使用触发器实现ID递增
-- 创建序列
CREATE SEQUENCE auto;
-- persons_tri 触发器名字
-- person 表名
-- AUTO.nextval AUTO表示刚刚创建的序列
-- personid 表示自增的字段
CREATE TRIGGER persons_tri
BEFORE INSERT ON person
FOR EACH ROW
DECLARE
BEGIN
SELECT AUTO.nextval
INTO :NEW.personid
FROM dual;
END;
相关文章推荐
- Oracle 表创建序列-触发 实现表ID自动增长
- oracle中的ID号实现自增长的方法
- oracle 序列 + 触发器 实现 ID自动增长
- 使用Oracle 序列 和 触发器实现 字段自增长的方法
- oracle中的ID号实现自增长的方法
- 【Oracle】利用触发器,序列实现id自增长
- Oracle插入数据并获取自增长序列ID方法
- 插入数据到oracle,实现id字段自增的方法
- Oracle实现插入记录ID自增长
- oracle主键自增长_序列及触发器实现
- Oracle主键ID设置自动增长(序列+触发器)
- oracle中使用序列和触发器实现单个字段值自增长
- ORACLE 实现自动增长::序列
- oracle 字段自动编号——触发器实现,非调用序列方法
- Oracle 实现ID 字段自增长
- Oracle 实现ID 字段自增长
- oracle使用序列和触发器实现主键的自动增长
- Oracle主键ID设置自动增长(序列+触发器)
- oracle实现自增长序列(主键)