Есть несколько проблем с вашим кодом триггера.
1) Цель этой части кода неясна:
BEGIN
SELECT fillHist_station FROM DUAL;
END;
fillHist_station
не объявлено, следовательно, этот код вызовет ошибку invalid identifier
.
2) Синтаксис запроса UPDATE
недействителен. Кроме того, вы намерены выбрать из таблицы, с которой сработал триггер, что не разрешено в Oracle. Из вашего кода видно, что вам не нужно запрашивать RESERVATION
для достижения своей цели. Поскольку строка была только что вставлена в RESERVATION
, вы уже знаете соответствующий номер клиента.
3) Вы пропускаете /
в конце
Вот обновленная версия вашего кода, с которой вы можете поиграть в этой скрипте базы данных (вы не указали структуру ваших таблиц, поэтому я просто создал связи, на которые ссылаются в запросе ):
CREATE OR REPLACE TRIGGER tr_update_solde_nbreserv
AFTER INSERT ON RESERVATION
FOR EACH ROW
BEGIN
UPDATE CLIENTS
SET NB_RESERV = NB_RESERV+1 , SOLDE = SOLDE+1
WHERE numc = :new.numc;
END tr_update_solde_nbreserv;
/