У меня есть эта процедура, которая вычисляет общую сумму, заплаченную за автомобиль, и определяет, можно ли изменить статус автомобиля на «ПРОДАНО», если сумма равна цене.
Я знаю, что проблема в запросе car_payment, но я не могу найти другой способ сделать сумму, кто-нибудь может мне помочь, пожалуйста?
create or replace trigger tr_paid_car
before insert
or update of amount
on car_payment
for each row
declare
v_amount number;
v_car_status_id car_status.car_status_id%type;
v_price car.price%type;
begin
select sum(amount)
into v_amount
from car_payment
where car_id = :new.car_id;
if inserting then
v_amount := v_amount + :new.amount;
elsif updating then
v_amount := v_amount + :new.amount - :old.amount;
end if;
select price
into v_price
from car
where car_id = :new.car_id;
if v_amount >= v_price then
select car_status_id
into v_car_status_id
from car_status
where description = 'SOLD';
update car
set car_status_id = v_car_status_id
where car_id = :new.car_id;
end if;
end;
/