Изключението „таблицата се променя“ се повдига, когато тригер, който е дефиниран като FOR EACH ROW, се опитва да получи достъп до таблицата, за която е задействан. Том Кайт е написал страхотно ръководство за причините и разрешаването на това изключение тук .
Във вашия публикуван пример нямате ЗА ВСЕКИ РЕД и затова не бих очаквал изключението да бъде повдигнато. Обикновено трябва само да използвате тригери FOR EACH ROW в случаите, когато е необходимо да получите достъп до стойностите :OLD или :NEW на всеки ред, което не сте.