oracle 的sequence是干什么用的?跟表有什么关系?
来源:百度知道 编辑:UC知道 时间:2024/06/01 23:50:48
很简单的可以这么理解,在oracle中没有自增字段,用sequence可以实现序列的自增长,在你插入id的值的时候将那个字段的插入值这样写 sequence_name.nextval 或者建立一个触发器来进行关联。
如果你自己来建表的话,是要单独建一个序列。
//建一个序列,从1开始,递增1
create sequence XXX increment by 1 start with 1
//跟表的id对应的方式(假设TABLE表只有两个字段)
//curval返回序列的当前值,nextval先增加序列的值,再返回值
insert into TABLE values(XXX.curval,'aaa')
insert into TABLE values(XXX.nextval,'bbb')
insert into TABLE values(XXX.nextval,'ccc')
这样插入的三条记录的id分别是1,2,3
如果你是用hibernate的话,在hbm.xml映射文件里可以把id的属性设为<generator class="native">这样hibernate会根据具体的底层数据库来使用默认的增长方式,对于oracle就是sequence
这个是用触发器关联的,给你个例子
----创建表
Create table t_user(
Id number(6),userid varchar2(20),loginpassword varchar2(20),isdisable number(6)
);
----创建序列
create sequence user_seq
increment by 1
start with 1
nomaxvalue
nominvalue
nocache
----创建触发器
create or replace trigger tr_use