mysql等其他的数据库都有随着记录的插入而表ID会自动增长的功能,反而oracle却没有这一功能,下面通过两种方式来解决字段增长的功能
一般字段自增长可以用来创建序列主键。
oracle的两种方法不管是哪一种都是需要序列去实现
1、序列+触发器
--创建表
create table tbauditrecordorder
(
prd_type VARCHAR2(1) not null,
prd_code VARCHAR2(20) not null,
menu_code VARCHAR2(32) not null,
entry_serial_no VARCHAR2(20) default ' ' not null,
entry_order_no INTEGER default 0 not null,
serial_status VARCHAR2(1) default ' ' not null,
record_order_no INTEGER default 0 not null
)
--创建序列
create sequence seq_t_auditrecordord
minvalue 1
maxvalue 9999999
start with 1
increment by 1
cache 20;
--创建触发器将序列中的值赋给插入表的行
create or replace trigger auditrecordord_trig
before insert on tbauditrecordorder
referencing old as old new as new for each row
declare
begin
select seq_t_auditrecordord.nextval into :new.record_order_no from dual;
end auditrecordord_trig;
insert into tbauditrecordorder values('0','001','wangyjMENU','123456789','1','0',0);
2、序列+显示调用序列
--创建表
create table tbauditrecordorder
(
prd_type VARCHAR2(1) not null,
prd_code VARCHAR2(20) not null,
menu_code VARCHAR2(32) not null,
entry_serial_no VARCHAR2(20) default ' ' not null,
entry_order_no INTEGER default 0 not null,
serial_status VARCHAR2(1) default ' ' not null,
record_order_no INTEGER default 0 not null
)
--创建序列
create sequence seq_t_auditrecordord
minvalue 1
maxvalue 9999999
start with 1
increment by 1
cache 20;
insert into tbauditrecordorder values('0','001','wangyjMENU','123456789','1','0',seq_t_auditrecordord.nextval);
select * from tbauditrecordorder;
其他一些sql:
删除触发器
drop trigger auditrecordord_trig;
drop sequence seq_t_auditrecordord;
select seq_t_auditrecordord.currval from dual;
select seq_t_auditrecordord.nextval from dual;