Mysql
 sql >> Baza danych >  >> RDS >> Mysql

wywołać nieznaną tabelę mysql

Poniżej pokazałem, co zostało powiedziane w komentarzach do pytania:

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

Zauważ, że zmieniłem aktualizacje z UPDATE ... JOIN ponieważ MySQL nie pozwala na zmianę danych wyzwalanej tabeli; chociaż w rzeczywistości nie aktualizowałeś table_a, JOIN mogło wystarczyć, aby MySQL sprzeciwił się ... to i złączenia zaktualizowałyby każdy wiersz w table_b/c który miał dopasowanie w table_a , a nie tylko table_a wiersze powiązane z wartościami w lub wierszu wyzwalacza.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jak rozwiązać problem nie udało się połączyć z /192.168.15.186 (port 80):połączenie nie powiodło się:ETIMEDOUT (przekroczono limit czasu połączenia) w Zaporze systemu Windows

  2. Doctrine nie utrwala encji z wartościami boolowskimi i PDO::ATTR_EMULATE_PREPARES =false w Mysql

  3. php czyta pole bitowe mysql zwracające dziwny znak

  4. Wiosenne zapytanie o dane localdate zwraca błędne wpisy - minus jeden dzień

  5. Dlaczego moja witryna asp.net-mvc używająca nhibernate po prostu przestałaby robić aktualizacje i usuwać?