Согласно синтаксису , в триггерах MySql нет предложения WHEN.Кроме того, вы пропустили действия AFTER / BEFORE INSERT / UPDATE / DELETE.
Я бы написал ваш триггер примерно так (может не компилироваться):
CREATE TRIGGER updateWage AFTER UPDATE OR INSERT ON st_penalty
FOR EACH ROW
BEGIN
IF (DAY(NOW()) = 1)
UPDATE st_penalty SET st_penalty.wage = (SELECT wage FROM staff WHERE staff.memId = st_penalty.memId) WHERE st_penalty.ID = new.ID
END;
новая переменная содержитнедавно добавленные / обновленные значения для строки.Я бы порекомендовал вам прочитать больше по ссылке выше о написании триггеров.