Mysql
 sql >> база данни >  >> RDS >> Mysql

задейства mysql неизвестна таблица

По-долу съм показал какво беше казано в коментарите към въпроса:

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

Имайте предвид, че промених актуализациите от UPDATE ... JOIN тъй като MySQL не ви позволява да променяте данните на задействаната таблица; въпреки че всъщност не актуализирахте table_a, JOIN можеше да е достатъчно за MySQL да възрази... това и обединенията щяха да актуализират всеки ред в table_b/c който има съвпадение в table_a , а не само table_a редове, свързани със стойностите в или ред на тригера.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да оптимизирам таблица за AVG заявка?

  2. Избор на печеливш лотариен билет PHP

  3. Не може да се свърже с mysql база данни [strato]

  4. вмъкнете няколко реда, като използвате една стойност на forigenk във формата

  5. Импортирайте китайски символи в таблицата на mysql