且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

MySQL中自定义函数实现id自增长

更新时间:2022-02-23 14:55:55

今天在项目中有这样一个需求,就是需要把table1里面的a,b,c三个字段通过按a,b分组,对c进行汇总,然后插入到table2中的a,b,c中,然后我就这样写的SQL语句:

insert into table2(a,b,c) select a,b,sum(c) c  from table1 group by a,b;

 

这样一写,问题又出现了table2有个主键id,但不是自增长的,需要在插入的时候自己给主键设值。于是我找老大要求把id改成自增长的,老大不同意。考虑到每次在把table1里面的数据插入到table2中的时候,table2都是空的,无奈,我只能写了这样一个实现id自增长的一个函数getId:

create function getId() returns int begin 
set @id = @id + 1;
return @id;
end;
   

然后在每次进行插入前都把id设为0,使id从1开始,于是我的SQL语句就成了下面这个样子:

set @id = 0;
insert into table2(id,a,b,c) select getId() id,a,b,sum(c) c from table1 group by a,b;
 

 

此外如果想删除该函数的话可以使用命令:

 
drop function getId;