2010-05-14 357 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