在使用mysql中我们使用auto_increment就很容易的来实现主键自增,但是在oracle中并没有这个关键字的存在,所以我们需要通过别的方法来实现。
序列序列(Sequence),序列生成器,用于提供一系列的数字,使用序列生成唯一键。每次访问序列,序列按照一定的规律增加或者减少。 序列的定义存储在SYSTEM表空间中,序列不像表,它不会占用磁盘空间。 序列独立于事务,每次事务的提交和回滚都不会影响序列。且一个序列只能对应一张表
1.使用任意一张测试表
2.序列创建
-- PD_TEL_BACK_SEQUENCE 定义你的序列名称
CREATE SEQUENCE PD_TEL_BACK_SEQUENCE INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
NOCACHE -- 不建缓冲区
3.创建触发器
CREATE OR REPLACE TRIGGER PD_TEL_BACK_SEQUENCE
-- 当表PD_TEL_BACK进行insert并且id为空的时候
BEFORE INSERT ON PD_TEL_BACK FOR EACH ROW WHEN (new.id is null)
begin
select PD_TEL_BACK_SEQUENCE.nextval into:new.id from dual;
end;
4.执行
尝试的insert一条记录,无需传入id。