我正在使用 LOAD DATA LOCAL INFILE 将 .csv 文件加载到 Mariadb 10.6 中。
入站数据中有一个 DATE 列posted_on
,我需要将月份名称存储在另一个字段中monther
,最好作为加载过程的一部分。
如果 posts_on = '2023-10-13' 则 Monther = 'October'
我认为触发器是合适的,并尝试了以下方面的变化(添加了新内容,之前/之后):
CREATE TRIGGER `t_add_monther` after INSERT ON `qn_txs`
FOR EACH ROW
UPDATE qn_txs SET NEW.qn_txs.`monther` = MONTHNAME(`posted_on`);
但无法克服第 1 行可怕的错误 1442 (HY000):无法更新存储函数/触发器中的表“qn_txs”,因为它已被调用此存储函数/触发器的语句使用。
有什么想法吗?是否需要采取不同的方法?
是的,您不能在同一个表的触发器中更新/删除/插入。这可能会导致触发器无限循环。
但是,如果要更改要插入的行中的值,则不需要使用 UPDATE。如果您
SET NEW.ColumnName
在触发器中,则会更改生成触发器的行中该列的值。演示: https: //dbfiddle.uk/qC9iCUbg