Одна ошибка, которую вы сделали, - это попытка сослаться на OLD.TOTALTRIPMADE
в предложении SET
, поскольку псевдоним OLD
не существует, и если таблица TRIP
не содержит столбец TOTALTRIPMADE
, тогда запись :OLD
выиграла ' t также содержит столбец TOTALTRIPMADE
(обратите внимание, что, поскольку это триггер вставки, запись :OLD
либо не будет существовать, либо все равно не будет содержать каких-либо значимых данных). Другая ошибка находится в вашем предложении WHERE
, где вы выбираете L#
из TRIP
, присоединенного к DRIVER
, но вы не связываете его обратно с таблицей DRIVER
, которую вы пытаетесь обновить. Вместо этого просто обновите DRIVER
, где L#
равно :NEW
значению L#
из таблицы отключения. Последняя ошибка, которую я заметил, - это использование вами оператора присваивания :=
, который предназначен для кода PL SQL, однако вы используете его в SQL, поэтому просто используйте =
без двоеточия:
CREATE OR REPLACE TRIGGER updatetotaltripmade
AFTER INSERT ON trip
FOR EACH ROW
ENABLE
BEGIN
UPDATE DRIVER
SET TOTALTRIPMADE = nvl(TOTALTRIPMADE,0)+1
WHERE L# = :NEW.L#;
END;
/