„Има ли някакъв начин да се избегне грешката в мутиращата таблица, без да се използва временна таблица за стойности или автономна транзакция?“
tl;dr не.
Грешката в мутиращата таблица е причинена от запитване на таблицата, която притежава тригера, или таблици, които са включени във връзка с външен ключ със собствената таблица (поне в по-старите версии на базата данни, не съм сигурен дали все още получава).
При правилно проектирано приложение това не трябва да е необходимо. Ето защо много хора разглеждат мутиращите таблици като индикатор за лошо моделиране на данни. Например, мутацията често е свързана с недостатъчна нормализиране.
Да перифразирам Джейми Завински:Някои хора, когато се сблъскат с изключение на мутираща таблица, си мислят „Знам, ще използвам автономни транзакции“. Сега те имат два проблема.
Понякога грешката може да бъде избегната чрез просто модифициране на стойностите :NEW в тригер BEFORE INSERT OR UPDATE или чрез използване на виртуални колони. Но ще трябва да публикувате повече подробности, за да видите дали те са приложими.
Но най-доброто решение е да не се нуждаете от друг вид.