MySQL VARCHAR 类具有 MIN 和 MAX 字符长度的数据类型

标签 mysql validation database-design types

关于我想要的值,正在寻找类似于 VARCHAR 的数据类型,但是有没有办法获得 MIN/MAX 字符长度?

VARCHAR(6,10)

最少 6 个字符,最多 10 个字符。

最佳答案

您可以添加触发器以在值超出范围时抛出异常,例如

DELIMITER $$

CREATE TRIGGER `insert_table_var` BEFORE INSERT ON `table` 
FOR EACH ROW
BEGIN
     DECLARE str_len INT DEFAULT 0;
     DECLARE max_len INT DEFAULT 10;
     DECLARE min_len INT DEFAULT 6;

     SET str_len = LENGTH(NEW.col);

     IF str_len > max_len OR str_len < min_len 
     THEN
           CALL col_length_outside_range_error();
     END IF;
END $$
DELIMITER ;;

虽然 SIGNAL 不可用,但调用未定义的存储过程就足够了(在这种情况下 col_length_outside_range_error)。否则,我认为使用数据库的应用程序将需要进行检查。

关于MySQL VARCHAR 类具有 MIN 和 MAX 字符长度的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2834330/

相关文章:

database-design - 事件流/提要,是否非规范化?

mysql - 我如何在 INFORMATION_SCHEMA.TABLES 和其他表之间建立关系

validation - 如何使用 RDF 模式验证 RDF

java - 业务逻辑验证模式和建议

mysql - 如何编写数据库查询来获取 laravel-8 中列值为 1 的所有记录?

php - 如何从类内部的数组中获取值

jquery - 使用有效图像验证表单

database-design - 在 MySQL 数据库中存储空字符串与 NULL 值?

mysql - SQL 连接重复计数

mysql - 错误 1064 (42000) : check the manual that corresponds to your MySQL server version for the right syntax to use near 'END'