Heim > Datenbank > MySQL-Tutorial > MySlq创建定长字符串主键,使用触发器_MySQL

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-01 13:40:52
Original
1272 Leute haben es durchsucht

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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage