最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

MySlq创建定长字符串主键,使用触发器_MySQL

来源:动视网 责编:小采 时间:2020-11-09 18:19:48
文档

MySlq创建定长字符串主键,使用触发器_MySQL

MySlq创建定长字符串主键,使用触发器_MySQL:bitsCN.com MySlq创建定长字符串主键,使用触发器 因为想让目录的主键整齐好用,所以使用定长的字符串做主键,在表为空和只有一个数据的时候LAST_INSERT_ID()方法获取的值都是1,所以在触发器里做了判断 drop table if exists tb_cate;
推荐度:
导读MySlq创建定长字符串主键,使用触发器_MySQL:bitsCN.com MySlq创建定长字符串主键,使用触发器 因为想让目录的主键整齐好用,所以使用定长的字符串做主键,在表为空和只有一个数据的时候LAST_INSERT_ID()方法获取的值都是1,所以在触发器里做了判断 drop table if exists tb_cate;


bitsCN.com
MySlq创建定长字符串主键,使用触发器 因为想让目录的主键整齐好用,所以使用定长的字符串做主键,在表为空和只有一个数据的时候LAST_INSERT_ID()方法获取的值都是1,所以在触发器里做了判断 drop table if exists tb_cate;create table tb_cate(id char(5) primary key DEFAULT '' COMMENT '目录编号,5位数字,高位补0,从00001开始,每次递增1,由序列和触发器控制', type char(1) default 0 COMMENT '目录类型,备用,可以设置共享目录等',name varchar(40) not null COMMENT '目录名称',`describe` varchar(200) COMMENT '目录描述',code varchar(30) not null COMMENT '目录完整编码,例如0000100002,不包含自身',
parent char(5) COMMENT '上级目录',lev char(1) default 0 COMMENT '目录等级,默认0级',create_user int(10) default 0 COMMENT '目录创建人,默认0为系统创建',update_user int(10) default 0 COMMENT '目录最后修改人,默认0为系统创建',createtime datetime COMMENT '目录创建时间',updatetiem datetime COMMENT '目录最后修改时间',increc_id int unique auto_increment COMMENT '只为实现触发器使用的字段,实体中不需要映射此字段'); delimiter // #必须有的CREATE TRIGGER tb_cate_createid before insert ON tb_cateFOR EACH ROW BEGINselect count(increc_id) from tb_cate into @inid;#判断表是否为空if @inid=0 then set new.id = SUBSTRING(concat('00000',cast(LAST_INSERT_ID() as char)),(char_length(concat('00000',cast(LAST_INSERT_ID() as char)))-4));elseset new.id = SUBSTRING(concat('00000',cast(LAST_INSERT_ID()+1 as char)),(char_length(concat('00000',cast(LAST_INSERT_ID()+1 as char)))-4));end if;END;// delimiter ; #必须有的 #下面是第二种方法,第一种方法在Mysql Workbench中测试有问题,第二种方法没有问题,都还没有在java中测试 delimiter // #必须有的 CREATE TRIGGER tb_cate_createId before insert ON tb_cateFOR EACH ROW BEGIN select count(increc_id) from tb_cate into @inid;if @inid=0 then set new.id = SUBSTRING(concat('00000000000000000000',cast(1 as char)),(char_length(concat('00000000000000000000',cast(1 as char)))-19));elseselect max(increc_id) from tb_cate into @maxid;set new.id = SUBSTRING(concat('00000000000000000000',cast(@maxid+1 as char)),(char_length(concat('00000000000000000000',cast(@maxid+1 as char)))-19));end if;END; // delimiter ; #必须有的
bitsCN.com

文档

MySlq创建定长字符串主键,使用触发器_MySQL

MySlq创建定长字符串主键,使用触发器_MySQL:bitsCN.com MySlq创建定长字符串主键,使用触发器 因为想让目录的主键整齐好用,所以使用定长的字符串做主键,在表为空和只有一个数据的时候LAST_INSERT_ID()方法获取的值都是1,所以在触发器里做了判断 drop table if exists tb_cate;
推荐度:
标签: 使用 主键 触发器
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top