mysql - MySQL 触发器可以模拟 CHECK 约束吗?

标签 mysql triggers constraints

我想在 MySQL 中使用 CHECK 约束,但不支持。 (与其他 RDBMS 不同,它会理解但不会强制执行 CHECK。)

我已经看到了一些使用触发器的解决方法。但他们倾向于为相关字段设置默认值,而不是返回错误。

如果不满足条件,是否可以构造一个返回错误的触发器?

最终我想要一个复制 CHECK 约束的触发器。

最佳答案

更新数据时:

delimiter $$
create trigger chk_stats1 before update on stats 
  for each row 
   begin  
    if  new.month>12 then
        SIGNAL SQLSTATE '45000'   
        SET MESSAGE_TEXT = 'Cannot add or update row: only';
      end if; 
      end; 
      $$

插入数据时:

   delimiter $$
    create trigger chk_stats before insert on stats 
      for each row 
       begin  
      if  new.month>12 then
       SIGNAL SQLSTATE '45000'   
       SET MESSAGE_TEXT = 'Cannot add or update row: only';
       end if; 
    end; 
    $$

这些触发器将用作检查约束,在插入或更新之前工作并检查月份,如果月份 >12 给出错误。

关于mysql - MySQL 触发器可以模拟 CHECK 约束吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9734920/

相关文章:

Javascript 元素 id 到 AJAX url

mysql - 检索具有最小日期的行中的所有列?

sql - 当某些列 = 0 时动态删除记录;数据清理

database - PostgreSQL 规则有什么用?

sql - 如何在包含空值的列上添加非空约束

python - 没有名为 flaskext.mysql 的模块

mysql - SQL 参数化 : How does this work behind the scenes?

sqlite - 在 INSERT 触发器中插入时触发器递归级别过多

mysql - 创建自定义错误消息 MySQL

c# - MVC ActionLink 在添加约束后生成 NON-Restul URL