怎么生成一个c0001~c9999的ID

----------序列

--创建一个序列 seq_test 起始值为1000 最大值为1004 步长为1 不循环  缓存为20的序列
create sequence seq_test start with 1000 maxvalue 1004 increment by 1 nocycle cache 20;

---使用数据字典
select * from user_sequences;

--查看序列的值
select sql_test.nextval from dual;--查看序列下一个值
select sql_test.currval from dual;--序列当前值

--创建一个序列 seq_test 起始值为1000 最大值为1004 步长为1 循环  缓存为20的序列

create sequence sqe_test3 start with 1000 maxvalue 1004 increment by 1 cycle cache 20;
select sqe_test3.naxtval from dual;

--怎么生成一个c0001,c0002,c9999的ID

--1.触发器  trigger
/*
  CREATE [OR REPLACE] TRIGGER [schema .] trigger
  { BEFORE | AFTER | INSTEAD OF }
  { dml_event_clause
  | { ddl_event [OR ddl_event]...
    | database_event [OR database_event]...
    }
    ON { [schema .] SCHEMA | DATABASE }
  }
  [WHEN ( condition ) ]
  { pl/sql_block | call_procedure_statement }
  --
  create   or   replace   trigger   style_insert
  before   insert   on   表名
  for each row
  begin
  select   seq_style.nextval   into   :new.id   from   dual;
  end;

  */

--2.函数 function

 --创建一个表
 drop table goods;
 create table goods(
  gid  varchar2(20)
 )
 select * from goods;
 --创建序列
 select * from user_sequences;
 drop sequence sqe_zy;
 create sequence sqe_zy start with 1 increment by 1 nocycle  cache 20;
   --select sqe_zy.nextval from dual;
   -- select 'C'||to_char(sqe_zy.nextval,'0000') from dual ;
   --select 'C'||'0001' from dual;
   
   --创建触发器
  create or replace trigger good_insert
    before insert on goods
    for each row
  begin
    select 'C' || trim(to_char(sqe_zy.nextval, '0000'))
      into :new.gid
      from dual;
  end;
 
  insert into goods select to_char(sqe_zy.currval) from dual connect by level<=99;
  drop trigger good_insert;
  select * from goods;
 
  --创建函数
  create or replace function goodtext(str1 in varchar, str2 in varchar)
    return varchar is
  begin
    return str1 || str2;
  end;
 
  --插入数据
  insert into goods select goodtext('C',trim(to_char(sqe_zy.nextval,'0000'))) from dual connect by level<=99;
  select * from goods;
 
 
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值