【发布时间】:2019-10-21 01:59:08
【问题描述】:
我有一个名为movimentacoes 的触发器,当将新记录添加到mov 表时,此触发器应增加cooperados 表中的integralizadas 列。实际上确实如此,但只是cooperados表中的第一条记录
这是我的触发器
DELIMITER $$
CREATE TRIGGER movimentacoes AFTER INSERT ON mov
FOR EACH ROW
BEGIN
UPDATE cooperados c
SET integralizadas = c.integralizadas + new.valor
WHERE c.id = new.id_coop;
END;
$$
DELIMITER ;
合作伙伴表
id | bigint(20) PRI NULL auto_increment
created_at | timestamp NULL
updated_at | timestamp NULL
nameCoop | varchar(255) NULL
numCoop | int(11) NULL
cpfCoop | varchar(11) NULL
dtCad | date NULL
dtDem | date NULL
description | text NULL
subscritas | decimal(6,2) NULL
integralizadas| decimal(6,2) NULL
aintegralizar | decimal(6,2) NULL
status | enum('ativo','inativo')
移动表
idMov bigint(20) PRI NULL auto_increment
created_at timestamp NULL
updated_at timestamp NULL
id_coop bigint(20) NULL
valor decimal(6,2) NULL
触发器仅在cooperado.id 为 1 时起作用
【问题讨论】:
-
你能补充一些关于这两个表的信息吗?
-
just to the first record是什么意思?触发器将更新所有与where子句匹配的记录。 -
如果您尝试在 cooperados 表上更新一个不同于 1 的 id 会发生什么? cooperados 表是否有其他 id 的记录?如果没有,则更新无法进行,需要先插入记录。
-
我可以手动更新表
cooperados没有问题,不管id是什么,但是只有当我在id 1中设置新记录时才会激活触发器