1、先假设有这么一个表:
create
table Employee (
ID INT not null,
Name NVARCHAR2(40) not null,
DepartOrder INT default 0,
constraint PK_S_DEPART primary key (DepartId)
);
ID INT not null,
Name NVARCHAR2(40) not null,
DepartOrder INT default 0,
constraint PK_S_DEPART primary key (DepartId)
);
在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。
2、创建序列
CREATE SEQUENCE SQL_TEST
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXvalue -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10; --设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为---------NOCACHE
示例如下:
-- Create sequence
create sequence SEQ_TEST
minvalue 1
nomaxvalue
start with 1
increment by 1
nocache;
3、创建触发器
create or replace trigger TRG_TEST before insert on Employee
for each rowbegin
select SEQ_TEST.nextval into :new.ID from dual;
end;