MySql workbench CHECK 约束

标签 mysql mysql-workbench check-constraints

<分区>

这里我想在记录插入数据库之前创建 2 个 CHECK 约束。

ALTER TABLE SubjectEnrollment
ADD CONSTRAINT register CHECK (register <= classSize AND register >=0),
ADD CONSTRAINT available CHECK (available <= classSize AND available >= 0);
  1. register 属性不应大于 classSize 属性且小于 0。
  2. 可用属性不应大于 classSize 属性且小于 0。

当我在 MySql Workbench 中输入此语法时,它会提示“语法错误:意外的 'CHECK' (check)'。我应该如何添加这些,使用 TRIGGER?

谢谢。

最佳答案

由于 MySQL 8.0.16 之前的版本不支持 check,因此您需要一个触发器。像这样的 CREATE 触发器:

delimiter $$
CREATE TRIGGER some_trigger_name
BEFORE INSERT ON SubjectEnrollment
FOR EACH ROW
BEGIN    
    IF (NEW.register > NEW.classSize OR NEW.register < 0)        
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'invalid data';
    END IF;
END
$$

您需要为 UPDATE 定义相同的触发器。

关于MySql workbench CHECK 约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39055586/

相关文章:

来自数据库的 Java JTable 数据

php - 从另一个网络远程访问mysql服务器

mysql - Google Cloud SQL 连接/权限失败

mysql - 如何在 MySQL 表上添加自定义 CHECK 约束?

sql - 检查所有三列是否不为空或为空

php - 为表中的 MySQL 时间戳列添加毫秒精度

mysql - 从多 SELECT 子查询返回多行

mysql - 仅从 MySQL Workbench 导出数据

mysql - 用于设置团队日程的数据库设计

sql - 检查确保 tableA 列中的值小于 tableB 列中的值的约束