数据库触发器实现字符串自增
实现目的:实现字符串从001递增到999
思想:
- 获取id值
- 将int类型的id转换为char类型
- 使用拼接函数以及右截取函数完成数据的截取
具体实现
- 建表
两个字段id以及PIN,我们要根据自增的id使PIN自增(不够三位则补0)
CREATE TABLE `test`(
`id` INT UNSIGNED AUTO_INCREMENT,
`PIN` VARCHAR(3) NOT NULL,
PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.触发器的设计
CREATE TRIGGER getPIN
BEFORE INSERT
ON test
FOR EACH ROW
BEGIN
DECLARE tid INT;
DECLARE tPin VARCHAR(3);
SET tid = new.id;
SET tpin=(SELECT RIGHT(CONCAT("00",CAST(tid AS CHAR)),3));
SET NEW.PIN = tpin;
END;
3.测试
INSERT INTO test
VALUES(1,''),(2,''),(3,''),(999,'');
结果:
拓展:
RIGHT(str,len) 从右读取str的len个字符
CAST(字段名 as 转换的类型) 转换类型用VARCHAR会报错
CONCAT(str1,str2)拼接字符串