日期:2014-05-16  浏览次数:20622 次

sequence与表中列的触发器关联

当直接在数据库中建表和sequence时,有时我们需要将表中的列(一般为主键)与对应的sequence关联。


----创建表
create table t_dept (
id number(6) primary key,
deptname varchar2(20) unique not null
);


----创建序列
create sequence t_dept_seq
increment by 1
start with 1
maxvalue 999999
nominvalue
nocycle
nocache


----创建触发器
create or? replace trigger tr_dept
before insert on t_dept
for each row
begin
select t_dept_seq.nextval into :new.id from dual;
end;

?

利用创建触发器的方式让表t_Dept的主键id与sequence:t_dept_seq关联起来,这样在插入数据时,主键可以按照sequence设置的方式自增。


如果你是用hibernate的话,在hbm.xml映射文件里可以把id的属性设为<generator class="native">这样hibernate会根据具体的底层数据库来使用默认的增长方式,对于oracle就是sequence .