- एक
IF
कथन कोTHEN
की आवश्यकता है - PL/SQL में, आप एक
=
का उपयोग करते हैं समानता के लिए परीक्षण करने के लिए, नहीं==
- आपको उन चरों को घोषित करने की आवश्यकता है जिन्हें आप चुन रहे हैं
जब मैं उन तीन चीजों को करता हूं, तो मुझे कुछ ऐसा मिलता है
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;
उन सिंटैक्स त्रुटियों से परे, मैं चौंक जाऊंगा यदि SELECT INTO
कथन सही था। ए SELECT INTO
बिल्कुल 1 पंक्ति वापस करनी चाहिए। आपकी क्वेरी को लगभग निश्चित रूप से कई पंक्तियों को वापस करना चाहिए क्योंकि ऐसी कोई विधेय नहीं है जो क्वेरी को किसी विशेष उड़ान या किसी विशेष बुकिंग तक सीमित कर दे। संभवतः, आप PASSENGER_BOOKING
में एक या अधिक स्तंभों में शामिल होना चाहते हैं टेबल।
इसके अतिरिक्त, यदि यह होमवर्क असाइनमेंट के अलावा कुछ और है, तो सुनिश्चित करें कि आप समझते हैं कि इस प्रकार का ट्रिगर बहु-उपयोगकर्ता वातावरण में ठीक से काम नहीं करता है।