今天在升级一个老系统时,发现执行插入数据报错,看后台才发现是它的触发器出错,最后发现是一堆触发器出问题了。没办法,只能全部改掉,顺便温习一下序列,索引和触发器,毕竟自己平时开发用的少,都有些忘了,用进废退啊。
一.序列(sequence)
1.序列创建
序列,常用与表中自动生成序列号。语法如下
create sequence 序列名
minvalue 1
maxvalue 9999999999999999999999999
start with 1
increment by 1
cycle | nocycle 到达最大值后是否循环
cache | nocache 是否缓存,默认20,对序列进行内存缓冲可以改善序列性能
2.序列删除
drop sequence 序列名
3.序列的使用
序列是使用nextval 和 currval 来调用的,语法如下
select 序列名.nextval from dual; 获取序列的下一个值
select 序列名.currval from dual; 获取序列的当前值
我们只执行 currval 永远无法产生下一个值,所以如果不先执行 nextval 单独的调用currval 是没意义的。
----待续----