MYSQL 根据表值更改值(约束还是触发器?)

标签 mysql mysql-workbench unique-constraint triggers event-triggers

关于 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/

相关文章:

php - 可以通过 PHP 从 Perl 执行 SQL 以提供全面的性能统计信息吗?

mysql - 有索引的查询比没有索引慢

mysql - 无法在mysql中创建新用户

oracle - 多列的唯一约束

mysql - 按计数排序(*) 子查询

java - Spring 4.3.0.RELEASE + Hibernate 5.2.0.Final - 每次插入重复行

mysql - 如何在 MySql 工作台中连接表?

java - Hibernate 和 NonUniqueObjectException

postgresql - 为什么我不能在 PostgreSQL 中设置这个唯一约束?

mysql - 在 Yii2 中如何在 andFilterWhere() 方法中执行 sql 函数?或替代方法是什么?