mysql关联表主键重刷
发布时间:2020-05-25 00:15:27 所属栏目:MySql 来源:互联网
导读:mysql关联表主键重刷
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 --备份数据库
--mysqldump -h localhost -uroot -p123456 database > dump.sql
--初始化interfaceType
--先处理掉
select it_id,count(*) as sum from server_interfaces group by it_id having sum>1
drop table interfaces_type;
create table interfaces_type
(
id int(5) NOT NULL AUTO_INCREMENT primary key comment '主键,作为接口id的前缀',type_name varchar(20) not null comment '接口类型名称',max_it_id int(11) comment '接口类型的接口id最大值'
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
insert into interfaces_type(type_name) select distinct it_type from interfaces;
update interfaces_type set max_it_id=id*10000 ;
drop PROCEDURE resetInterfaceType;
delimiter //
CREATE PROCEDURE resetInterfaceType()
BEGIN
DECLARE minId INT;
DECLARE maxId INT;
SELECT max(id) into maxId from interfaces_type ;
update interfaces_type set id=id+maxId;
SELECT min(id) into minId from interfaces_type ;
update interfaces_type set id=id-minId+1;
update interfaces_type set max_it_id=id*10000;
END//
delimiter ;
call resetInterfaceType();
drop PROCEDURE resetInterface;
delimiter //
CREATE PROCEDURE resetInterface()
BEGIN
declare itType varchar(20) ;
declare beginId int(11);
declare itCount int(11);
declare itId int(11);
declare isFinished boolean default false;
declare maxItId int(11);
declare maxItId2 int(11);
DECLARE ittCursor CURSOR FOR select type_name,max_it_id from interfaces_type;
DECLARE itCursor CURSOR FOR select it_id from interfaces where it_type=itType;
declare continue handler for not found set isFinished=true;
select max(it_id) into maxItId from interfaces;
select max(it_id) into maxItId2 from server_interfaces;
update interfaces set it_id=it_id+maxItId+maxItId2;
update server_interfaces set it_id=it_id+maxItId+maxItId2;
OPEN ittCursor;
repeat
begin
FETCH ittCursor INTO itType,beginId;
if not isFinished then
begin
open itCursor ;
repeat
begin
fetch itCursor into itId;
if not isFinished then
begin
update interfaces set it_id=beginId where it_id=itId;
update server_interfaces set it_id=beginId where it_id=itId;
set beginId=beginId+1;
end;
end if;
end;
until isFinished end repeat;
close itCursor;
update interfaces_type set max_it_id=beginId+1 where type_name=itType;
set isFinished=false;
end;
end if;
end;
until isFinished end repeat;
CLOSE ittCursor;
END//
delimiter ;
call resetInterface();
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
