【oracle资料整理】--【9】序列sequence --- 自动编号 ---- IDENTITY (SQLSERVER)

来源:互联网 发布:mp5播放器软件下载 编辑:程序博客网 时间:2024/05/20 10:14

序列 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')),
       '王'); 

原创粉丝点击