sql >> Databasteknik >  >> RDS >> Mysql

trigga mysql okänd tabell

Jag har visat nedan vad som sades i kommentarerna till frågan:

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

Observera att jag ändrade uppdateringarna från UPDATE ... JOIN eftersom MySQL inte tillåter dig att ändra data i den utlösta tabellen; medan du faktiskt inte uppdaterade table_a, kunde JOIN ha räckt för att MySQL skulle ha invänt... det och joinningarna skulle ha uppdaterat varje rad i table_b/c som hade en matchning i table_a , inte bara table_a rader relaterade till värdena i eller rad av utlösaren.




  1. SQL MELLAN Operatör för nybörjare

  2. 5 sätt att kontrollera om en tabell finns i PostgreSQL

  3. LocalDB-distribution på klientdator

  4. Hur man optimerar mysql-fråga för att få kategorier och underkategorier