由于无法在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 ;
但它会引发错误。
答案 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;