MySQL触发器的使用

原始需求:

编号字段:L+年月日+十位流水号,例如:L201502090000000001   
第二天的数据十位流水号又是从1开始

测试数据表以及触发器的建立如下:

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for gztest
-- ----------------------------
DROP TABLE IF EXISTS `gztest`;
CREATE TABLE `gztest` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `code` bigint(20) DEFAULT NULL,
  `content` char(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
DROP TRIGGER IF EXISTS `getcode`;
DELIMITER ;;
CREATE TRIGGER `getcode` BEFORE INSERT ON `gztest` FOR EACH ROW BEGIN
declare newcode BIGINT;
SET newcode=(SELECT `code` FROM gztest WHERE `code` LIKE CONCAT(DATE_FORMAT(curdate(),‘%Y%m%d‘),‘%‘) ORDER BY `code` DESC LIMIT 1);
IF newcode THEN
    SET NEW.code=newcode+1;
ELSE
  SET NEW.code=CONCAT(DATE_FORMAT(curdate(),‘%Y%m%d‘),‘0000000001‘);
END IF;
END
;;
DELIMITER ;


本文出自 “随网互联” 博客,请务必保留此出处http://suiwnet.blog.51cto.com/2492370/1613398

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。