MySQL触发器更新,从另一个表中选择

时间:2011-05-18 17:20:50

标签: mysql triggers

刚学习触发器,我创建了以下触发器;

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 个答案:

答案 0 :(得分:5)

我实际上已经设法解决了这个问题。这是更新的代码

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行的列值之前指定表名。

答案 1 :(得分:1)

看起来你有一个错字。

您已使用尾随反引号输入增量值,而不是将其包含在反引号中。

您的触发器现在可能绑定到名为incremental`的表,我假设该表不存在。

因为你已经排除了上述内容。我看到缺少UPDATE关键字。在SET行之前添加UPDATE table。将表替换为表的名称。