sql >> Databáze >  >> RDS >> Mysql

trigger mysql neznámá tabulka

Níže jsem ukázal, co bylo řečeno v komentářích k otázce:

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

Všimněte si, že jsem změnil aktualizace z UPDATE ... JOIN protože MySQL vám neumožňuje měnit data spouštěné tabulky; zatímco jste ve skutečnosti neaktualizovali table_a, JOIN mohl stačit na to, aby MySQL vznesl námitku... a spojení by aktualizovala každý řádek v table_b/c který měl shodu v table_a , nejen table_a řádky související s hodnotami v nebo řádku spouštěče.




  1. Návrat časové razítko s připraveným výpisem

  2. Přenosná verze MySql

  3. ERROR 1005 MySQL Workbench Dopředné inženýrství

  4. Jak automatizovat proces synchronizace schématu databáze SQL Server