oracle主键超长,oracle固定长度主键的生成

开始接触oracle,觉着非常繁琐,连主键递增都要做个序列和触发器,逐渐了解后,觉着这样的设计还是非常灵活和实用的,下面的代码有注释,应该不用再多解释了。 可以直接用no做主键,放弃id这个字段,只是一直使用id,看不到了不舒服,所以就留着了 有一个小问

开始接触oracle,觉着非常繁琐,连主键递增都要做个序列和触发器,逐渐了解后,觉着这样的设计还是非常灵活和实用的,下面的代码有注释,应该不用再多解释了。    可以直接用no做主键,放弃id这个字段,只是一直使用id,看不到了不舒服,所以就留着了

有一个小问题就是序列和触发器的执行需要加上 ”/ “这个符号,不知道有没有和我遇到一样问题的朋友,这个应该不是问题,不过希望对喜欢自己摸索的朋友一点提示。

/**

* 目录

*/

create table tb_cate(

id number(5) primary key,

no varchar2(5) not null,

type char(1) default 0,

name varchar2(40) not null,

describe varchar2(200),

code varchar2(30) not null,

parent number(10),

lev number(1) default 0,

create_user number(10) default 0,

update_user number(10) default 0,

createtime date,

updatetiem date);

--为表tb_cate添加注释

comment on column tb_cate.id is '目录id,从1开始,每次递增1,由序列和触发器控制';

comment on column tb_cate.no is '目录编号,5位数字,高位补0,从00001开始,每次递增1,由序列和触发器控制';

comment on column tb_cate.type is '目录类型,备用,可以设置共享目录等';

comment on column tb_cate.name is '目录名称';

comment on column tb_cate.describe is '目录描述';

comment on column tb_cate.code is '目录完整编码,例如00001/00002,不包含自身';

comment on column tb_cate.parent is '上级目录';

comment on column tb_cate.lev is '目录等级,默认0级';

comment on column tb_cate.create_user is '目录创建人,默认0为系统创建';

comment on column tb_cate.update_user is '目录最后修改人,默认0为系统创建';

comment on column tb_cate.createtime is '目录创建时间';

comment on column tb_cate.updatetiem is '目录最后修改时间';

--创建tb_cate.id 的序列

create sequence tb_cate_id_seq

minvalue 1 --最小值是1

nomaxvalue --没有最大值

start with 1 --0从1开始

increment by 1 --递增1

nocycle --不循环

nocache --不建缓存区

/

--创建tb_for.id的触发过程

create or replace trigger tb_cate_id_tg

before insert on tb_cate for each row when (new.id is null)

declare v_nextval number(10);--设置变量接收序列,否则序列会递增两次

begin

v_nextval := tb_cate_id_seq.nextval;--变量赋值

select v_nextval into:new.id from dual;--设置自增id

select lpad(v_nextval,5,'0') into:new.no from dual;--设置固定位数的no值

end;

/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值