sql >> Base de Datos >  >> RDS >> Mysql

desencadenar tabla desconocida mysql

He mostrado a continuación lo que se dijo en los comentarios a la pregunta:

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

Tenga en cuenta que cambié las actualizaciones de UPDATE ... JOIN ya que MySQL no le permite cambiar los datos de la tabla activada; mientras que en realidad no estaba actualizando table_a, JOIN podría haber sido suficiente para que MySQL se opusiera ... eso y las uniones habrían actualizado cada fila en table_b/c que tenía una coincidencia en table_a , no solo table_a filas relacionadas con los valores en o fila del disparador.