oracle中sequence创建方法及原则。
CREATE SEQUENCE 序列名
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXvalue -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10; --设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为NOCACHE
写一个函数,
create or replace function get_id() return varchar2
is
begin
return to_char(sysdate,'yyyymmdd')||lpad(seq_a.nextval,12,'0')
end;
查询:select seq_XX.nextval from daul;
在Oracle中要想设置字段自增,序列和触发器组合使用才行。例如:
序列:
create sequence SEQ_XLH
minvalue 1
start with 1
increment by 1
cache 20
order;
首先在emp表增加一列ID类型字符20位:alter table emp add ID char(20);
触发器:
create or replace trigger trig_emp_id
before insert on emp
for each row
begin
select to_char(sysdate,'yyyymmdd')||
substr(to_char(1000000000000+seq_xlh.nextval),-12,12)
into :new.ID from dual;
end;