【发布时间】:2014-05-27 02:34:05
【问题描述】:
我有一个名为 Base52Encode 的 MySql 函数,它接受一个 bigint 并返回一个 varchar(12)。
我有一个名为 Things 的表,它有一个 bigint auto_increment 作为主键,称为 ThingId,还有一个 varchar(12) 类型的第二列,称为 ShortCode。
我想将 ShortCode 的值设置为通过 auto_increment 创建的 ThingId 主键的 base-52 编码值。
DELIMITER $$
CREATE TRIGGER BeforeInsertThings
BEFORE INSERT ON Things
FOR EACH ROW
BEGIN
set new.ShortCode = Base52Encode(new.ThingId);
END $$
但是每当我插入一行时,ShortCode 值总是设置为 0(零),这意味着传递给 Base52Encode 的值也是零。
我假设问题是当此触发器运行时 auto_increment 值尚未启动。
那么我该如何解决这个问题呢?
【问题讨论】: