错误-1054未知列'列名称'在'字段列表'

时间:2015-11-26 07:54:32

标签: mysql sql phpmyadmin

当我在插入之前创建触发器以防止错误输入时,触发器已创建但在该表中插入值之后会创建错误,如错误 - 1054未知列'列名'在'字段列表' 。我想创建触发器以防止用户输入错误,然后在创建触发器后如何在表中插入值。代码如下所示触发器

CREATE DEFINER=`root`@`localhost` TRIGGER `mobile_no` BEFORE INSERT ON `invoiceform_clients` FOR EACH ROW 
BEGIN 
if length(clientPhonenumber)=10 THEN 
 insert into invoiceform_clients(clientPhonenumber) values(clientPhonenumber); 
ELSE 
 SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT= 'Mobile NO. must be in 10 digit'; 
end if; 
END;

1 个答案:

答案 0 :(得分:0)

您不需要在触发器体内重复插入语句 - 只需验证列值并在信号错误时抛出信号。如果触发器代码正常退出,则触发触发器的原始INSERT也将成功。

您还应该测试NEW.clientPhonenumber而不仅仅是clientPhonenumber - 这指定您要检查记录中的字段,因为它将在INSERT完成后存在。

触发器应如下所示:

CREATE DEFINER=`root`@`localhost` TRIGGER `mobile_no`
  BEFORE INSERT ON `invoiceform_clients`
  FOR EACH ROW 
BEGIN 
  IF length(NEW.clientPhonenumber) != 10 THEN 
    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT= 'Mobile NO. must be in 10 digit'; 
  END IF; 
END;