Modyfikacja rekordow tabeli, ktora wywolala trigger

0

Witam. Zaczne od tego ze dostalem gotowa baze i program ja obslugujacy, wiec zmiany zwiazane z programem albo gruntowna przebudowa bazy raczej nie wchodza w gre.

Sprawa wyglada w ten sposob, ze w jednej tabeli (nazwijmy ja czynnosci) umieszczone sa rozne typy czynnosci - sa czynnosci "wieksze", ktore skladaja sie z czynnosci "mniejszych" (np. "wieksza" czynnosc 'budowanie drogi' sklada sie z 'kopania rowu', 'wylewania asfaltu' itd.). Kazda mniejsza czynnosc ma zapisany czas potrzebny na jej wykonanie. Rodzaj czynnosci (glowna albo skladowa) oznaczona jest jako jedno z pol tabeli i na podstawie tego mozna zorientowac sie jakiego typu jest to czynnosc. Moim zadaniem jest wpisywanie do czynnosci wiekszych czasu potrzebnego na jej zakonczenie, czyli sumy czasow czynnosci skladowych.

Pierwszym pomyslem bylo uzycie triggera. Wszystko wydawalo sie proste, ale pojawil sie problem, bo mysql wywalal blad ktory brzmial mniej wiecej tak: "nie mozna modyfikowac tabeli, do ktorej nalezy uruchomiony trigger". Wywolanie takiej funkcji rzeczywiscie mogloby doprowadzic do rekurencyjnych wywolan triggerow i do zapetlenia sie, ALE w tym przypadku zapytania w triggerze sa tak skonstruowane, ze zapetlenie jest niemozliwe.

Czy jest jakis sposob na zrobienie tego za pomoca triggerow? Probowalem Before insert, after insert, procedur wywolywanych z triggera i zawsze wywalalo blad. Problem zalatwialoby wywolanie procedury chwile po zakonczeniu triggera, ale nie wiem czy jest taka mozliwosc.

0

jedyne co mi przychodzi na myśl to druga tabelka z polami id_rekordu_do_zmiany_sumy_czasów i o_ile_ta_sume_zmienić. I teraz tak trigger na głównej tabeli robi inserta to pobocznej a trigger na pobocznej robi update na głównej

Trochę to takie od d**y strony ale jeśli nie możesz grzebać w aplikacji (w sensie napisać stored proc do dodawania rekordów) to tak będzie najprościej

0

Tego tez probowalem i efekt taki sam ;/ Chyba zostawiana jest jakas blokada na tabele ktora wywolala trigger i dopoki trigger sie nie skonczy nie da sie z nia nic zrobic ;/

1 użytkowników online, w tym zalogowanych: 0, gości: 1