Workbench创建触发器在新增时自动注入uuid及时间戳
当我在java中厌烦了每做一个save操作就需要给reference注入一个uuid的时候就想着能不能在数据库里搞个触发器自动帮我搞定这件事情。果然懒才是创造的原动力,哈哈。为了偷懒才会去研究各种各样的办法。
-- before insert
IF (NEW.`reference` IS NULL or NEW.`reference`='') THEN
SET NEW.`reference` = REPLACE(UUID(),"-","");
END IF;
IF (NEW.`made` IS NULL ) THEN
SET NEW.`made` =CURRENT_TIMESTAMP ;
END IF;
--before update
IF (NEW.`modify` IS NULL ) THEN
SET NEW.`modify` =CURRENT_TIMESTAMP ;
END IF;
上面insert是使用触发器给新数据注入uuid及给创建时间戳注入一个新的时间戳
下面是修改时给修改时间戳字段注入一个新的时间戳
上面的uuid我对-进行了处理,看着-有点碍眼就把它给去除了。
如果想用原始的uuid
IF (NEW.`reference` IS NULL or NEW.`reference`='') THEN
SET NEW.`reference` = UUID();
END IF;
workbench6.0的童鞋觉得这样太麻烦也可以使用默认值加入这句话:ON UPDATE CURRENT_TIMESTAMP()来对修改时间戳字段赋予默认值,对于创建时间可以用CURRENT_TIMESTAMP来对创建时间戳赋值,不过升到8.0直接不能使用属性来做默认值,workbench会自动帮你转换为函数,有点恶心。CURRENT_TIMESTAMP在6.0版本也会出现时灵时不灵的现象,个人建议使用触发器,一步搞定。
记录点滴,重在参与。
转载请注明出处,谢谢!