简述
为数据表添加序列实现插入数据时可获取自增主键。
定义
序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。不占用磁盘空间,占用内存。
其主要用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值。
语法
- 查询序列
select * from user_sequences
SEQUENCE_NAME 序列名称
MIN_VALUE 最小值
MAX_VALUE 最大值
INCREMENT_BY 递增间隔数(默认为1,可为负值)
LAST_NUMBER 最后序列数
CYCLE_FLAG 循环标志(是否允许序列到达极限值后重新从最小值开始计数)
- 创建序列
CREATE SEQUENCE test_seq --序列名
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
NOCACHE -- 不建缓冲区
- 删除序列
DROP SEQUENCE test_seq
4.序列的使用
select test_seq.currval from dual //获取当前序列值
select test_seq.nextval from dual //生成下一个序列号
5.创建触发器
create trigger test_trig before
insert on student for each row when (new.id is null)
begin
select test_seq.nextval into:new.id from dual;
end;
网友评论