Mysql
 sql >> Database >  >> RDS >> Mysql

attiva la tabella sconosciuta di MySQL

Di seguito ho mostrato ciò che è stato detto nei commenti alla domanda:

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

Nota che ho modificato gli aggiornamenti da UPDATE ... JOIN poiché MySQL non consente di modificare i dati della tabella attivata; mentre in realtà non stavi aggiornando table_a, il JOIN potrebbe essere stato sufficiente perché MySQL si sia opposto ... e i join avrebbero aggiornato ogni riga in table_b/c che aveva una corrispondenza in table_a , non solo table_a righe relative ai valori o alla riga del trigger.