mysql - 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 ;
但是发生了同样的错误,我在这里做错了什么?
解决方案
您需要一个 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 ;
但是您的列名是一个错误的选择,乍一看它会导致错误的结论。
推荐阅读
- javascript - 如何在堆积条形图中显示 json api 数据值?
- java - 为什么 Eclipse 建议使用 ArrayList
- php - 带数组的php mysqli查询
- regex - 在 Grep for Windows 命令行中使用正则表达式
- javascript - 如何在解决之前等待 nedb 查询完成?查询有时会超出承诺
- html - 角材料扩展表
- mongodb - 如何在 MongoDB 中查找包含空值的文档的数量?
- python - 如何在 Python 中搜索字符串中的列表项?
- python - Python csv reader for row in reader - 一次性下划线在这段代码中代表什么?
- linux-kernel - u-boot 代码中的自定义 DDR 控制器初始化