sql >> Database >  >> RDS >> Mysql

trigger mysql onbekende tabel

Ik heb hieronder weergegeven wat er werd gezegd in de opmerkingen bij de vraag:

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

Merk op dat ik de updates heb gewijzigd van UPDATE ... JOIN aangezien MySQL u niet toestaat de gegevens van de getriggerde tabel te wijzigen; terwijl je table_a niet echt bijwerkte, had de JOIN genoeg kunnen zijn voor MySQL om bezwaar te maken... dat en de joins zouden elke rij in table_b/c hebben bijgewerkt die een overeenkomst had in table_a , niet alleen table_a rijen gerelateerd aan de waarden in of rij van de trigger.




  1. Hoe afbeelding (bolb-type) in jsp-pagina van mySql DB in Struts 2 met Hibernate weer te geven

  2. MySQL-prestaties bij het updaten van rij met FK

  3. ORA-65096-fout oplossen bij het maken van geautomatiseerde tests in Django met behulp van Oracle

  4. Over het GO-commando in SQL Server