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

时间:2010-05-14 13:05:31

标签: mysql validation database-design types

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

VARCHAR(6,10)

这将至少包含6个字符,最多10个字符。

2 个答案:

答案 0 :(得分:2)

这在SQL中称为CHECK约束,它是ignored by MySQL

  

CHECK子句被解析但被所有存储引擎忽略。

答案 1 :(得分:2)

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

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)。否则,我认为使用数据库的应用程序需要进行检查。