mysql - Error-1054 'column name' 中的未知列 'field-list'

标签 mysql sql phpmyadmin

当我在 插入 之前创建一个触发器 以防止错误输入时,触发器已创建,但在该表中插入值后,它会创建错误,如 Error- 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;

最佳答案

您不需要在触发器主体内重复插入语句 - 只需验证列值并在错误时抛出信号。如果触发器代码正常退出,触发触发器的原始 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;

关于mysql - Error-1054 'column name' 中的未知列 'field-list',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33933192/

相关文章:

mysql - 如何在不使用 union mysql 的情况下从一个查询中的两个不同表求和

mySQL str_to_date() 函数返回错误

python - views.py 和 urls.py 不连接来执行功能

mysql - SQL:对所有行执行相同的操作

sql - 通过自左连接传递聚合函数列

java - 如何从Java中的数据库应用程序的jar文件创建exe文件?

mysql - PhpMyAdmin 数据导入性能问题

mysql - docker-compose:mariadb - 连接被拒绝

mysql - 返回一个 MySQL 表中存在但另一表中不存在的项目,需要考虑 2 列

PHP动态计数函数