mysql - 检查如何进行,我遇到问题

标签 mysql sql

我正在使用检查约束来检查条目是男性还是女性,但由于某种原因它不起作用。操作系统:Ubuntu 18.04 LTS

我尝试修改代码的每一点,但没有任何效果

 ALTER TABLE BANK ADD GENDER VARCHAR(1) 
      CHECK(GENDER = 'M' OR 'F' OR 'T') AFTER NAME;

我只想要条目中的 M 和 F,没有其他内容。

最佳答案

MySQL 在 8 之前的版本中不支持 check。它会被解析,但不会执行任何操作。

您可以使用触发器检查值,如果值不是您期望的值,则中止触发器中的执行。

delimiter //
  CREATE TRIGGER BANK_check_gender BEFORE INSERT ON BANK 
  FOR EACH ROW
  BEGIN
   IF NEW.GENDER not in ('M', 'F', 'T')
   THEN
       SIGNAL sqlstate '45000' 
       SET message_text = 'invalid gender';
   END IF
END
DELIMITER ;

关于mysql - 检查如何进行,我遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57798697/

相关文章:

MySQL 's ' secure-file-priv' 不允许加载数据 infile,即使是从分配的安全文件夹

php - 函数 php 中的 if/else 语句未插入

php - 不存在实体的 Doctrine ORM 默认值

Mysql子查询通过group by优化

sql - 如何使用分层子查询构建层次结构路径

mysql - 使用 VBA 执行在文本框中编写的 SQL

mysql - 如何使用mysql通过where子句搜索垂直表

java - 基于日期的SQL过滤

sql - SQL Server 2008如何计算记录之间的时间

MySQL相关 'projects'查询