mysql中的数字长度

时间:2014-01-23 13:34:55

标签: mysql

由于无法在mysql中设置变量的最小长度,如果添加的数字值有11个数字,我怎么能检查触发器。我试图以这种方式做到这一点

    delimiter //
CREATE TRIGGER  OnInsert BEFORE INSERT on 'klient'
declare err varchar(40);
if char_length(CAST(NEW.Phone AS CHAR(10)) < 9 THEN
set err = "zly nr telefonu";
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = err;
end if;
if char_length(CAST(NEW.Kod AS CHAR(6))) < 5 THEN
set err = "zly kod pocztowy";
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = err;
end if;
if NEW.nr < 1 THEN
set err = "zly nr domu";
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = err;
end if;
if char_length(CAST(NEW.Pesel AS CHAR(12))) < 11 THEN
set err = "zly nr pesel";
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = err;
end if;
//
delimiter ;

但它会引发错误。

1 个答案:

答案 0 :(得分:0)

CREATE TRIGGER t1 BEFORE INSERT ON user
 FOR EACH ROW BEGIN

   DECLARE numLength INT;
   SET numLength = (SELECT CHAR_LENGTH(NEW.Phone));

   IF (numLength < 9) THEN
     SET NEW.col = 1/0 ;/*--or some thing else **/
   END IF;

END;