2010-05-14 96 views

回答

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 ;; 

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

2

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

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

+0

所以像这样:CHECK(LENGTH(fieldName)> = 6 AND LENGTH(fieldName)<= 10) – 2010-05-14 13:30:26

+0

@Phill Pafford:是 – newtover 2010-05-14 13:53:36

+0

@Phill Pafford:你不需要MySQL吗? – Cez 2010-05-14 14:06:44