当前位置:   article > 正文

oracle中的ID号实现自增长的方法(序列)

oracle中的ID号实现自增长的方法(序列)
利用序列产生主键值(创建序列用于自增长)。 

序列(Sequence)是一种可以被多个用户使用的用于产生一系列唯一数字的数据库对象。序列定义存储在数据字典中,通过提供唯一数值的顺序表来简化程序设计工作,可以使用序列自动产生主键的键值。当一个序列第一次被查询调用时,它将返回一个预定值。在随后的每次查询中,序列将产生一个按指定的增量增长的值。序列可以循环,或者是连续增加的,直到指定的最大值为止。 序列创建之后整个数据库可以共享这个序列。默认自增长的最大值为10的28次方。
  1. --创建序列语法:
  2. CREATE SEQUENCE sequence //创建序列名称
  3. [INCREMENT BY n] //递增的序列值是n 如果n是正数就递增,如果是负数就递减 默认是1
  4. [START WITH n] //开始的值,递增默认是minvalue 递减是maxvalue
  5. [{MAXVALUE n | NOMAXVALUE}] //最大值
  6. [{MINVALUE n | NOMINVALUE}] //最小值
  7. [{CYCLE | NOCYCLE}] //循环/不循环
  8. [{CACHE n | NOCACHE}];//分配并存入到内存中
  9. --创建案例:
  10. --创建sequence
  11. create sequence seq_on_test
  12. increment by 1
  13. start with 1
  14. nomaxvalue
  15. nocycle
  16. nocache;
  17. --建表 :
  18. drop table test;
  19. create table test(
  20. ID integer ,
  21. stu_name varchar2(4)
  22. );
  23. --插入数据 :
  24. insert into test values(seq_on_test.nextval,'A');
  25. insert into test values(seq_on_test.nextval,'B');
  26. --seq的两个方法 :
  27. select seq_on_test.currval from dual;
  28. select seq_on_test.nextval from dual;
  29. --nextval 返回序列中下一个有效的值,任何用户都可以引用
  30. --currval 中存放序列的当前值
  31. -- nextval 应在 currval 之前指定 ,二者应同时有效
  32. --修改序列
  33. //修改序列的增量, 最大值, 最小值, 循环选项, 或是否装入内存
  34. alter SEQUENCE sequenceName //创建序列名称
  35. [INCREMENT BY n] //递增的序列值是n 如果n是正数就递增,如果是负数就递减 默认是1
  36. [START WITH n] //开始的值,递增默认是minvalue 递减是maxvalue
  37. [{MAXVALUE n | NOMAXVALUE}] //最大值
  38. [{MINVALUE n | NOMINVALUE}] //最小值
  39. [{CYCLE | NOCYCLE}] //循环/不循环
  40. [{CACHE n | NOCACHE}];//分配并存入到内存中
  41. 修改序列的注意事项:
  42. l 必须是序列的拥有者或对序列有 ALTER 权限
  43. l 只有将来的序列值会被改变
  44. l 改变序列的初始值只能通过删除序列之后重建序列的方法实现
  45. --删除序列:
  46. l 使用DROP SEQUENCE 语句删除序列
  47. l 删除之后,序列不能再次被引用



  1. -- 使用触发器实现ID递增
  2. -- 创建序列
  3. CREATE SEQUENCE auto;
  4. -- persons_tri 触发器名字
  5. -- person 表名
  6. -- AUTO.nextval AUTO表示刚刚创建的序列
  7. -- personid 表示自增的字段
  8. CREATE TRIGGER persons_tri
  9. BEFORE INSERT ON person
  10. FOR EACH ROW
  11. DECLARE
  12. BEGIN
  13. SELECT AUTO.nextval
  14. INTO :NEW.personid
  15. FROM dual;
  16. END;


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/626589
推荐阅读
相关标签
  

闽ICP备14008679号