关于 MYSQL 语法的几个问题,在 google 上似乎很难找到这些答案。是否可以设置约束或触发器,以便当列的值达到某个点时它会被重置并完成其他操作。或者,如果 hourLog 大于零,则许可证状态将从默认值 INVALID 更改为 Valid。
我知道所有这些都可以通过使用数据库的程序来完成,但只是好奇是否有 MYSQL 命令可以使用触发器或约束自动执行此操作。
抱歉,如果这是发布的,我只是在寻找类(class)的快速澄清。
最佳答案
您可以使用这两个触发器,一个用于更新,一个用于插入:
CREATE TRIGGER upd_yourtable BEFORE UPDATE ON yourtable
FOR EACH ROW
SET new.licenseStatus=
CASE WHEN new.hourLog>0 THEN 'Valid' ELSE 'INVALID' END
;
CREATE TRIGGER ins_yourtable BEFORE INSERT ON yourtable
FOR EACH ROW
SET new.licenseStatus=
CASE WHEN new.hourLog>0 THEN 'Valid' ELSE 'INVALID' END
;
请参阅 fiddle here .
关于MYSQL 根据表值更改值(约束还是触发器?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16310228/