mysql自定义业务编码

这些只是基本的思路,可能代码并不能完美运行,细节方面就不在赘述,自己调整,仅仅提供思路。


1.整体思路,在触发器中设计生成规则并且插入到相应的表中。


2.测试表,

CREATE TABLE `worklist` (

`listCode` varchar(12) NOT NULL DEFAULT '',

`contacts` varchar(10) NOT NULL,

PRIMARY KEY (`listCode`)

) ENGINE=InnoDB DEFAULT CHARSET=gbk


3.测试触发器

DELIMITER $$

USE `test`$$

DROP TRIGGER /*!50032 IF EXISTS */ `setSeqCustomVal`$$

CREATE

/*!50017 DEFINER = 'root'@'localhost' */

TRIGGER `setSeqCustomVal` BEFORE INSERT ON `worklist`

FOR EACH ROW BEGIN

DECLARE dateStr VARCHAR(12) CHARACTER SET gbk;

SET dateStr = DATE_FORMAT(NOW(), '%Y%m%d');

SET @maxCode = (SELECT MAX(listCode) FROM worklist WHERE listCode LIKE CONCAT(dateStr, '%'));

IF @maxCode IS NULL

THEN

SET new.listCode = CONCAT(dateStr, '0001');

ELSE

SET new.listCode = CAST(@maxCode + 1 AS CHAR);

END IF;

END;

$$

DELIMITER ;

你可能感兴趣的:(mysql自定义业务编码)