Mam problem z funkcją, która sprawdza kwotę kary pieniężnej za przetrzymaną książkę i wpisuje ją do odpowiedniej kolumny. Problem jest taki, że próbowałem na różne sposoby zmienić tą funkcję, a problem wyskakuje wciąż ten sam. Ostatnia aktualizacja błędu wraz z kodem funkcji poniżej:
KOD FUNKCJI:
CREATE OR REPLACE FUNCTION policz_pieniadze() RETURNS TRIGGER AS' DECLARE roznica_dat int4; data_zwrotu date; data_przewidywana date; BEGIN SELECT borrowed_books.date_due_for_return INTO data_przewidywana FROM borrowed_books WHERE book_borrowing_id = OLD.book_borrowing_id; data_zwrotu = NEW.date_returned; roznica_dat = data_zwrotu - data_przewidywana; IF roznica_dat > 0 THEN UPDATE borrowed_books SET amount_of_fine = roznica_dat * (SELECT value FROM rules WHERE rules_id = 1) WHERE borrowed_books.book_borrowing_id = OLD.book_borrowing_id; RETURN NEW; ELSE UPDATE borrowed_books SET amount_of_fine = 0 WHERE borrowed_books.book_borrowing_id = OLD.book_borrowing_id; RETURN NEW; END IF; END; 'LANGUAGE 'plpgsql';
KOD BŁĘDU:
ERROR: stack depth limit exceeded
HINT: Increase the configuration parameter "max_stack_depth".
CONTEXT: SQL statement "SELECT 1 FROM ONLY "public"."books" x WHERE "isbn" = $1 FOR SHARE OF x"
SQL statement "UPDATE borrowed_books SET amount_of_fine = $1 * (SELECT value FROM rules WHERE rules_id = 1) WHERE borrowed_books.book_borrowing_id = $2 "
Z góry dziękuję za pomoc.