MySQL VARCHAR как тип данных с длиной символов MIN и MAX - PullRequest
0 голосов
/ 14 мая 2010

Ищете тип данных, который похож на VARCHAR в отношении значений, которые я хотел бы, но есть ли способ получить длину символа MIN / MAX?

VARCHAR(6,10)

Это должно содержать не менее 6 символов и не более 10 символов.

Ответы [ 2 ]

2 голосов
/ 14 мая 2010

Вы можете добавить триггер для выброса исключения, когда значения находятся за пределами диапазона, например

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). В противном случае я думаю, что приложению, использующему базу данных, понадобится выполнить проверки.

2 голосов
/ 14 мая 2010

Это называется ограничение CHECK в SQL, и оно игнорируется MySQL .

Предложение CHECK анализируется, но игнорируется всеми механизмами хранения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...