我们知道在mysql数据库中,在建表语句中可以直接输入auto_increment字段来实现ID的自增长,然而在oracle中并未提供自增长的关键字,因此在oracle中我们需要按照以下步骤实现自动增长字段。
第一步:创建序列
-- Create sequence
create sequence SEQ_CFG_MONITOR_PROGRAM --序列名称
minvalue 1 --最小值
maxvalue 9999999999999999999999999999 --最大值
start with 41 --当前从41开始
increment by 1 --每次自增1
cache 10;
第二步:创建触发器
create or replace trigger 触发器名称 before
insert on 作用表名称 for each row /*对每一行都检测是否触发*/
begin
select seq_cfg_monitor_program.nextval into:New.id from dual;
end;
好了,到这里当你再插入表记录时就可以直接不用插入ID,表也会自动插入自增长的ID,如下
create table aa(
id number(10) not null,
name varchar2(20)
)
insert into aa(name) values('xiaoming');
此时ID会自动填入表中,当然如果不怕麻烦或者说数据量不大的情况下,我们也可以手动调用序列,实现ID的增长,比如以上插入语句我们可以改写成insert into aa(id,name) values(seq_cfg_monitor_program.nextval,'xiaoming');这样也是可以的,当然如果这种情况,我想你也就不需要序列了,直接手动插入ID即可,比如这样写insert into aa(id,name) values(1,'xiaoming');
总结
使用序列自增长注意事项
1.数据量大,且一般通过程序或者应用程序插入时应该采用自增长序列。
2.原则上在使用序列的场合应该遵循一表对应一序列原则,这样也便于表数据的维护。