序列 sequence --- 自动编号 ---- IDENTITY (SQLSERVER)
<1>建立序列
create sequence seq1; 从1开始 每次自动增加1 没有最大值
<2>怎么使用
select seq1.nextval from dual;
nextval 伪列 下一个值
select seq1.currval from dual;
currval 伪列 当前值
create sequence seq2
start with 1000 --起始值1000
increment by 2 --步长2
maxvalue 9000 --最大值9000
minvalue 900 --最小值900
cycle --循环序列
1000开始
每次增加2 一直到9000
回到900 重新开始
<3>和表关联作为表的字段的值
a) create table student(
xh number(4) primary key, --学号
xm varchar2(20) not null --姓名
);
要求:学号字段 从1000开始每次增加4 最大值9999
--建立序列
create sequence xh_seq
start with 1000 --从1000开始
increment by 4 --每次增加4
maxvalue 9999 --最大值 9999
;
--使用SQL语句关联
insert into student values
(xh_seq.nextval,'Mike');
insert into student values
(xh_seq.nextval,'John');
insert into student values
(xh_seq.nextval,'Rose');
--特点:能产生唯一的值,但是不能保证值在表中的连续性
b) create table teacher(
teacherxh varchar2(10) primary key,
teachername varchar2(20)
);
要求:教师的编号的格式是TH00001
TH00002
....
--建立序列
create sequence teacher_seq
maxvalue 99999;
--
insert into teacher values ('TH'||
ltrim(to_char(teacher_seq.nextval,'00000')),
'张三');
insert into teacher values ('TH'||
ltrim(to_char(teacher_seq.nextval,'00000')),
'李');
insert into teacher values ('TH'||
ltrim(to_char(teacher_seq.nextval,'00000')),
'王');