表结构与你的有点不同(我在你发布你的结构之前开始写这个 - 我使用日期时间字段),但我认为你仍然应该了解它是如何工作的:
CREATE TABLE IF NOT EXISTS `TestTable` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`date` datetime NOT NULL,
`no` varchar(6) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
这里是INSERT
触发器。
DELIMITER //
CREATE TRIGGER `Test` BEFORE INSERT ON `TestTable`
FOR EACH ROW BEGIN
DECLARE c INT;
SET c = (SELECT COUNT(*) + 1 FROM TestTable WHERE YEAR(date)=YEAR(NOW()));
SET NEW.date = NOW();
SET NEW.no = CONCAT( SUBSTR(YEAR(NOW()),-2) ,"-", LPAD(c,3,'0') );
END
//
DELIMITER ;
但是您可能应该考虑另一种结构并将您的PRNo
字段拆分为一个字段year
和一个number
字段,并且仅使用计数部分来创建每年的自动增量