我正在学习触发器,我创建了以下触发器:
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;
然而,该值似乎没有被更新。有什么想法吗?
我实际上已经自己解决了这个问题。这是更新后的代码:
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行需要先指定表名,再指定列值。
看起来你打错了。
你输入了一个带有尾随反引号的 incremental 而不是用反引号括起来。
很可能你的触发器现在绑定到一个叫做 incremental`
的表,我假设该表不存在。
既然你已经排除了以上原因,我看到 UPDATE 关键字丢失了。在你的 SET 行之前添加 UPDATE table
。将 table 替换为表的名称。