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