首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

一个用来生成流水号的存储过程

我们经常需要用一个流水号来唯一表示一条数据,我们有时采用队列来自动生成一个唯一的流水号,但是采用队列经常不能满足我们的需求,比如说,这个队列只能设定一个最小值,最大值,然后进行累加,不能将产生这个流水号的日期包括今这个流水号中;一种类型就要新建一个队列等。 下面这个存储过程可以产生一个流水号,它的格式是当前日期(格式YYYYMMDD)+6位的流水号数字,不同的类型只要给出一个不同的类型名称就可以了。在使用这个存储过程前,要先创建一个表来保存不同的类型,表结构如下: create table T_GENID (   CLASS   NUMBER(2) not null,   GENDATE CHAR(8) not null,   ID      VARCHAR2(12) not null ) tablespace SERVICE_MAIN_DAT   pctfree 10   pctused 80   initrans 1   maxtrans 255   storage   (     initial 1M     next 1M     minextents 1     maxextents unlimited     pctincrease 0   ); -- Create/Recreate primary, unique and foreign key constraints alter table T_GENID   add constraint PK_GENID primary key (CLASS,ID)   using index   tablespace SERVICE_MAIN_IDX   pctfree 10   initrans 2   maxtrans 255   storage   (     initial 1M     next 1M     minextents 1     maxextents unlimited     pctincrease 0   );

01

零售商贩mysql表设计:banner管理表

为什么要设置自增主键 id ? PRIMARY KEY (id) 可以唯一标识一行数据,在 InnoDB 构建索引树的时候会使用主键。 自增 id 是顺序的,可以保证索引树上的数据比较紧凑,有更高的空间利用率以及减少数据页的分裂合并等操作,提高效率。(数字顺序搜索快一点) 一般使用手机号、身份证号作为主键等并不能保证顺序性。 流水号一般相对较长,比如 28 位,32 位等,过长的话会二级索引占用空间较多。同时为了业务需求,流水号具有一定的随机性。 int(11)是什么意思? “int(11)中,11代表的并不是长度,而是字符的显示宽度 为什么id不能为空NOT NULL? 如果查询中包含可为 NULL 的列,对 MySQL 来说更难优化 ,因为可为 NULL 的列使 得索引、索引统计和值比较都更复杂 。可为NULL 的列会使用更多的存储空间 ,在 MySQL 里也需要特殊处理 。当可为NULL 的列被索引肘,每个索引记录需要一个额 外的字节,在 MyISAM 里甚至还可能导致固定大小 的索引 (例如只有一个整数列的 索引) 变成可变大小的索引。(为null是占用存储空间的。为空不占用存储空间哦)

01
领券