sql - How to create trigger on update with condition based on old and new data? -
i want update field server_prev_level_xp
when new.server_xp > old.server_prev_level_xp
i use mariadb , documentation.
i try doesn't work :
create trigger level_update after update of server_xp on servers each row when (new.server_xp > old.server_prev_level_xp) begin set new.server_prev_level_xp = old.server_prev_level_xp + old.server_prev_level_xp >> 1; set new.server_level = old.server_level + 1; end;
have error on line 4:
when (new.server_xp > old.server_prev_level_xp)
what doing wrong?
the syntax used create trigger doesn't apply mariabd ([of <trigger column list>]
, for each row [when (search condition)]
). see create trigger.
one option use if statement.
remember: such set statement has no effect in after trigger because row change have occurred.
.
delimiter // create trigger `level_update` /*after*/ before update on `servers` each row begin if new.`server_xp` > old.`server_prev_level_xp` . . . end if; end// delimiter ;