Mysql 实现非整数列的自增长

195 阅读1分钟

通过函数和触发器实现Mysql 数据表的非整数列的自增长

第一步:创建数据表

//实现 t_machine 表 machine_id的自增长
create table t_machine (
uuid VARCHAR(32),
machine_id VARCHAR(12),
machine_name VARCHAR(20),
organization VARCHAR(12),
create_by VARCHAR(32),
create_date datetime,
update_by VARCHAR(32),
update_date datetime,
del_flag VARCHAR(2),
PRIMARY KEY(uuid)
)

第二步:创建函数

create function f_GetMachineId()
returns varchar(12)
begin
    return(select CONCAT('M',RIGHT(10000 + IFNULL(right(MAX(machine_id),3),0)+1),3) from t_machine);
end

//备注:结果拼接位 以M字符开头 保留三位数字 的machine_id

执行函数SELECT返回结果如图:

第三步:创建触发器

create trigger machineTrigger
before insert on t_machine
for each ROW
BEGINE
    SET new.machine_id = f_GetMachineId();
END