trigger mysql unknown table -


i've been trying solve problem. here code:

create trigger some_trigger after update on table_a     each row begin     declare tname varchar(20);      if (table_a.field_offer=1)       set tname='table_b';     elseif (table_a.field_offer=0)       set tname='table_c';      end if;          if ((new.field_state = 0))        update tname join table_a on tname.id=table_a.ref_field        set tname.stock = tname.stock -1;       elseif ((new.field_state = 1))        update tname join table_a on tname.id=table_a.ref_field        set tname.stock = tname.stock +1;       end if;       end; 

i getting:

unknown table 'table_a' in field list. field_offer , field_state can null.

i've shown below said in comments question:

create trigger some_trigger after update on table_a     each row begin     declare tname varchar(20);     if (new.field_offer=1)        update `table_b`         set stock = case new.field_state                     when 0 stock - 1                     when 1 stock + 1                     else stock                     end        id=new.ref_field        ;     elseif (new.field_offer=0)        update `table_c`         set stock = case new.field_state                     when 0 stock - 1                     when 1 stock + 1                     else stock                     end        id=new.ref_field        ;     end if;     ... 

note changed updates update ... join mysql not allow change data of triggered table; while not updating table_a, join have been enough mysql have objected... , joins would've updated every row in table_b/c had match in table_a, not table_a rows related values in or row of trigger.


Comments

Popular posts from this blog

jOOQ update returning clause with Oracle -

java - Warning equals/hashCode on @Data annotation lombok with inheritance -

java - BasicPathUsageException: Cannot join to attribute of basic type -