Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

acionar tabela desconhecida mysql


Eu mostrei abaixo o que foi dito nos comentários da pergunta:
CREATE TRIGGER some_trigger AFTER UPDATE ON table_a
    FOR EACH ROW BEGIN
    DECLARE tname VARCHAR(20);
    IF (NEW.field_offer=1) THEN
       UPDATE `table_b` 
       SET STOCK = CASE NEW.field_state 
                   WHEN 0 THEN STOCK - 1 
                   WHEN 1 THEN STOCK + 1 
                   ELSE STOCK 
                   END
       WHERE ID=NEW.ref_field
       ;
    ELSEIF (NEW.field_offer=0) THEN
       UPDATE `table_c` 
       SET STOCK = CASE NEW.field_state 
                   WHEN 0 THEN STOCK - 1 
                   WHEN 1 THEN STOCK + 1 
                   ELSE STOCK 
                   END
       WHERE ID=NEW.ref_field
       ;
    END IF;
    ...

Observe que alterei as atualizações de UPDATE ... JOIN pois o MySQL não permite alterar os dados da tabela acionada; enquanto você não estava realmente atualizando table_a, o JOIN poderia ter sido suficiente para o MySQL ter objetado... isso e as junções teriam atualizado todas as linhas em table_b/c que teve uma correspondência em table_a , não apenas table_a linhas relacionadas aos valores em ou linha do gatilho.