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 ;

    原文作者:yummykang
    原文地址: https://www.jianshu.com/p/3d43ba019ca7
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞