- En
HVIS sætning har brug for en
THEN
- I PL/SQL bruger du en
=
at teste for lighed, ikke==
- Du skal erklære de variabler, du vælger til
Når jeg gør de tre ting, får jeg sådan noget her
create or replace trigger PASSENGER_BOOKING_T1
AFTER insert on PASSENGER_BOOKING
for each row
declare
l_seat flight.seat%type;
l_flight_id flight.flight_id%type;
begin
IF (:NEW.CLASS_TYPE = 'ECO')
THEN
SELECT F.AVL_SEATS_ECOCLASS,F.FLIGHT_ID
INTO l_seat, l_flight_id
FROM BOOKING B,
JOURNEY_FLIGHT J,
FLIGHT F
WHERE B.JOURNEY_ID = J.JOURNEY_ID
and F.FLIGHT_ID = J.FLIGHT_ID;
UPDATE FLIGHT
SET AVL_SEATS_ECOCLASS = (l_seat-1)
WHERE FLIGHT_ID = l_flight_id;
END IF;
end;
Ud over disse syntaksfejl ville jeg blive chokeret, hvis SELECT INTO
udsagnet var korrekt. En SELECT INTO
skal returnere præcis 1 række. Din forespørgsel bør næsten helt sikkert returnere flere rækker, da der ikke er nogen prædikater, der vil begrænse forespørgslen til en bestemt flyafgang eller en bestemt reservation. Du vil formodentlig slutte dig til en eller flere kolonner i PASSENGER_BOOKING
tabel.
Derudover, hvis dette er noget andet end en hjemmeopgave, skal du sørge for at forstå, at denne form for trigger ikke fungerer korrekt i et flerbrugermiljø.