Триггер, вызывающий хранимую процедуру - PullRequest
1 голос
/ 23 марта 2011

Я не смог получить вывод и не смог найти проблему.

Вопрос:

Table : rent_info(cust_id,date_out,date_due_in,date_returned,fine)

Этот стол предназначен для аренды книг. Сначала при вставке я должен указать cust_id, date_out (дата выпуска книги), date_due_in (это 7 дней после даты выпуска). Когда книга возвращается, триггер используется для вставки данных в таблицу rent_info.

Я должен указать дату возврата. В триггере я должен рассчитать штраф в размере 10 $ за каждые прошедшие дни.

Для возврата я написал процедуру, которая обновляет таблицу и вставляет дату возврата. Затем создается триггер (триггер на уровне строк, который проверяет наличие обновлений о размере штрафов). И в качестве последнего утверждения рассчитанный штраф обновлен в таблице.

Проблема в том, что я мог сгенерировать сумму штрафа, но оператор update, указанный для обновления штрафа, дает мне « ошибка мутирования таблицы ».

Подскажите, пожалуйста, где я ошибся. Извините, что не опубликовал код. Я не мог получить код из лаборатории. Если этой информации недостаточно, я могу попробовать ее в своей системе и опубликовать здесь позже.

1 Ответ

2 голосов
/ 23 марта 2011

Без кода немного сложно догадаться, как вы пытались решить эту проблему, но похоже, что вы написали инструкцию UPDATE, чтобы обновить текущую строку из триггера уровня строки.

Это невозможно.Вы не можете ОБНОВИТЬ строку, которая находится в процессе обновления.

Вы можете обновить рассчитанный штраф, изменив значение ": new.fine" внутри триггера.

...