SQL触发器仅影响第一条记录

时间:2019-06-05 14:24:57

标签: mysql sql triggers

我有一个名为movimentacoes的触发器,当将新记录添加到integralizadas表时,此触发器应增加cooperados表中的mov列。确实可以,但是只是到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 ;

cooperados表

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时,触发器才起作用

1 个答案:

答案 0 :(得分:0)

因此,我找到了答案,因为我的integralizadas列为空,所以我的触发器无法影响它,现在我的cooperados表是这样的:

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)    NOT NULL <--    
aintegralizar | decimal(6,2)    NULL    
status        | enum('ativo','inativo')

每个人