Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle ट्रिगर्स अपडेट एक और टेबल पर

  1. एक IF कथन को THEN की आवश्यकता है
  2. PL/SQL में, आप एक = का उपयोग करते हैं समानता के लिए परीक्षण करने के लिए, नहीं ==
  3. आपको उन चरों को घोषित करने की आवश्यकता है जिन्हें आप चुन रहे हैं

जब मैं उन तीन चीजों को करता हूं, तो मुझे कुछ ऐसा मिलता है

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 में एक या अधिक स्तंभों में शामिल होना चाहते हैं टेबल।

इसके अतिरिक्त, यदि यह होमवर्क असाइनमेंट के अलावा कुछ और है, तो सुनिश्चित करें कि आप समझते हैं कि इस प्रकार का ट्रिगर बहु-उपयोगकर्ता वातावरण में ठीक से काम नहीं करता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. टेबल एफके संबंधों के आधार पर पीएल/एसक्यूएल में डिलीट स्टेटमेंट कैसे उत्पन्न करें?

  2. Oracle में एक विशिष्ट प्रारूप में टाइमस्टैम्प कैसे सम्मिलित करें

  3. मैं Oracle REGEXP_REPLACE फ़ंक्शन के भीतर कोष्ठक को हाइफ़न में कैसे बदल सकता हूँ?

  4. Oracle - मैं किस TNS नाम फ़ाइल का उपयोग कर रहा हूँ?

  5. एसक्यूएल:इंडेक्स कॉलम के अनुसार वैल्यू कैसे जोड़ें