首页 > 解决方案 > MySQL创建触发器以从另一列获取值

问题描述

我有一个包含“barkoda1,barkoda2,barkoda3,@pdfa1,@pdfa2,@pdfa3”列的表,我想要做的是当分配给 barkoda1 的记录复制相同的记录到@pdfa1,例如如果 barkoda1定义为“1234567890”@pdfa1 应该是“1234567890.pdf”。

我试图为它创建一个触发器,但失败了;

DELIMITER //
CREATE TRIGGER pdfdeneme AFTER INSERT
ON finyeb_ba_2369_bio_for_2__r_d_
FOR EACH ROW
BEGIN
  UPDATE finyeb_ba_2369_bio_for_2__r_d_ SET `@pdfa1`=NEW.barkoda1;
END//
DELIMITER ;

当我创建此触发器时,它不会返回任何错误,但是当我将记录添加到表 mysql 时返回“它已被调用此存储函数/触发器的语句使用”。

也试过这种方式

DELIMITER //
CREATE TRIGGER pdfdeneme BEFORE INSERT
ON finyeb_ba_2369_bio_for_2__r_d_
FOR EACH ROW
BEGIN
  INSERT INTO finyeb_ba_2369_bio_for_2__r_d_(`@pdfa1`) VALUES(NEW.barkoda1);
END//
DELIMITER ;

但是发生了同样的错误,我在这里做错了什么?

标签: mysqltriggers

解决方案


您需要一个 BEFORE INSERT TRIGGER

然后只使用 SET 子句

DELIMITER //
CREATE TRIGGER pdfdeneme BEFORE INSERT
ON finyeb_ba_2369_bio_for_2__r_d_
FOR EACH ROW
BEGIN
  SET NEW.`@pdfa1` =  CONCAT(NEW.barkoda1,'.pdf');
END//
DELIMITER ;

但是您的列名是一个错误的选择,乍一看它会导致错误的结论。


推荐阅读