„Czy istnieje sposób na uniknięcie błędu tabeli mutacji bez użycia tymczasowej tabeli dla wartości lub autonomicznej transakcji?”
tl;dr nie.
Błąd mutacji tabeli jest spowodowany zapytaniem do tabeli będącej właścicielem wyzwalacza lub tabel, które są zaangażowane w relację klucza obcego z tabelą będącą właścicielem (przynajmniej w starszych wersjach bazy danych, nie ma pewności, czy nadal jest uzyskiwana).
W prawidłowo zaprojektowanej aplikacji nie powinno to być konieczne. Dlatego wiele osób uważa tabele mutacji za wskaźnik słabego modelowania danych. Na przykład mutacja jest często związana z niewystarczającą normalizacją.
Parafrazując Jamiego Zawińskiego:Niektórzy ludzie w obliczu mutującego wyjątku w tabeli myślą:„Wiem, użyję transakcji autonomicznych”. Teraz mają dwa problemy.
Czasami błędu można uniknąć, po prostu modyfikując wartości :NEW w wyzwalaczu BEFORE INSERT OR UPDATE lub używając wirtualnych kolumn. Musisz jednak opublikować więcej szczegółów, aby sprawdzić, czy mają one zastosowanie.
Ale najlepszym obejściem tego problemu jest brak potrzeby używania innego rodzaju.