Зачем вам для этого триггер? Похоже, что приведенный выше запрос приведет к бесконечному циклу. Каждый раз, когда вы обновляете строку, она вызывает триггер обновления, который фактически обновляет таблицу и, таким образом, вызывает триггер снова, снова и снова, пока что-то не происходит.
Вместо этого, почему бы вам не рассчитать и не обновить столбец с первоначальным обновлением. Запрос будет выглядеть так:
UPDATE Services_Offer
SET
column1 = value1,
column2 = value2,
final_price =
(
SELECT service_price
FROM Services_Level
WHERE Services_Level.level_code = Services_Offer.level_code
) * service_size
WHERE id = XXX
где column1 = значение1, column2 = значение2 исходит из вашего первоначального запроса на обновление.