Mysql
 sql >> Base de données >  >> RDS >> Mysql

déclencher une table inconnue mysql

J'ai montré ci-dessous ce qui a été dit dans les commentaires à la question :

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;
    ...

Notez que j'ai changé les mises à jour de UPDATE ... JOIN comme MySQL ne vous permet pas de modifier les données de la table déclenchée ; alors que vous ne mettiez pas réellement à jour table_a, le JOIN aurait pu être suffisant pour que MySQL s'y oppose... cela et les jointures auraient mis à jour chaque ligne dans table_b/c qui avait une correspondance dans table_a , pas seulement table_a lignes liées aux valeurs dans ou ligne du déclencheur.