简单的oracle表自动增长实现

–建示例表


CREATE TABLE test(
ID Number(4) NOT NULL PRIMARY KEY,
NAME VARCHAR(25),
);

–定义一个sequence序列

create SEQUENCE sequence_test
INCREMENt BY 1 --增量大小
START WITH 1 --增量起始位置
NOMAXVALUE --不设置最大值
NOCYCLE --一直累加不循环
NOCACHE --不建立缓冲区

/*
以上代码完成了一个序列(sequence)的建立过程,
名称为emp_sequence,
范围是从1开始到无限大(无限大的程度是由你机器决定的),
nocycle 是决定不循环,如果你设置了最大值那么你可以用cycle 会使seq到最大之后循环.
对于nocache顺便说一下如果你给出了cache值那么系统将自动读取你的cache值大小个seq
,这样在反复操作时会加快运行速度,但如果遭遇意外情况如当机了或oracle死了,则下次取出的seq值将和上次的不连贯.
*/

–仅有表和序列还无法进行自动增长,需要添加一个触发器,如下
create or replace trigger tr_increment_test before
insert on test for each row when(new.id is null)
begin
select sequence_test.nextval into:new.id from dual;
end;

–触发器创建完成,注意:此处new.id中的id根据表的实际主键名称而定

–检验数据插入
insert into test(name)values('basketball');
insert into test(name)values('football');

/*就此完成oracle对表插入自动增长的设置
总结:
1、建表
2、建序列
3、建触发器
*/