该函数满足的一个需求就是,产生一个自增的编码。
首先要创建一个表。来保存你上一个创建字段的信息
DROP TABLE IF EXISTS `dicnotable`;
CREATE TABLE `dicnotable` (
`ID` int(11) NOT NULL auto_increment,
`DataBaseName` varchar(20) default NULL,
`TableName` varchar(20) default NULL,
`PreFix` varchar(20) default NULL,
`Total` varchar(20) default NULL,
`NumLength` varchar(20) default NULL,
`Info` varchar(200) default NULL,
`OperID` varchar(20) default NULL,
`OperName` varchar(20) default NULL,
`RegisterDate` timestamp NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=gb2312;
-- ----------------------------
-- Records
-- ----------------------------
INSERT INTO `dicnotable` VALUES ('1', 'boss', 'Person', 'KGEP', '0', '4', '员工编码', 'KGEP9999', '张三, '2010-09-10 14:30:25');
每增加一个数据,会在所创建表的total字段上加一,这样就保存了上一个创建的ID,
然后写一个自定义的函数,通过传入表名,然后取出TOTAL,然后再加上自定义的KGEP,
最后得到的自增字段的结果,例如"KGEP0001"
DELIMITER $$
drop function if exists `F_GetSysID` $$
CREATE
FUNCTION `F_GetSysID`( TableName varchar(30))
RETURNS varchar(30)
BEGIN
declare TPreFix varchar(20);
declare TTotal varchar(20);
declare TNumLength varchar(20);
declare ZeroString varchar(20);
set @PreFix='';
set @Total ='';
set @Length=0 ;
set @TotalLength =0;
set @ZeroNum=0;
select PreFix into TPreFix from DicNoTable where TableName=TableName;
select Total into TTotal from DicNoTable where TableName=TableName;
select NumLength into TNumLength from DicNoTable where TableName=TableName;
set @TotalLength=length(TTotal+1);
if @TotalLength>TNumLength
then
set ZeroString='1';
end if;
if @TotalLength<=TNumLength
then
set ZeroString=TTotal+1;
while @ZeroNum<TNumLength-@TotalLength do
set ZeroString=concat('0',ZeroString);
set @ZeroNum=@ZeroNum+1;
end while;
set ZeroString=concat(TPreFix,ZeroString);
end if;
return ZeroString;
END$$
DELIMITER ;