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
Post a Comment