从另一张表中选择并更新MySQL触发器

5

我正在学习触发器,我创建了以下触发器:

CREATE TRIGGER `incremental_before_ins_tr` BEFORE INSERT ON incremental`
FOR EACH ROW
BEGIN
SET NEW.source = (Select source from crm_record
where msisdn = new.msisdn order by dat DESC limit 1);
END;

然而,该值似乎没有被更新。有什么想法吗?
2个回答

10

我实际上已经自己解决了这个问题。这是更新后的代码:

CREATE TRIGGER `incremental_before_ins_tr` BEFORE INSERT ON `incremental`
FOR EACH ROW
BEGIN
SET NEW.source = (Select source from crm_record
where crm_record.msisdn = new.msisdn order by dat DESC limit 1);
END;

第5行需要先指定表名,再指定列值。


0

看起来你打错了。

你输入了一个带有尾随反引号的 incremental 而不是用反引号括起来。

很可能你的触发器现在绑定到一个叫做 incremental` 的表,我假设该表不存在。

既然你已经排除了以上原因,我看到 UPDATE 关键字丢失了。在你的 SET 行之前添加 UPDATE table。将 table 替换为表的名称。


这实际上是该条目中的一个打字错误,它已经绑定到了正确的表格。 - Michael
尝试过了,但是出现了以下错误:无法在存储函数/触发器中更新表incremental,因为它已经被调用该函数/触发器的语句使用 - Michael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接