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

एक ट्रिगर बनाएं जो एक टेबल पर कॉलम अपडेट करता है जब दूसरी टेबल में कॉलम अपडेट होता है

<ब्लॉकक्वॉट>

मैं दिनांक और पंक्ति आईडी कैसे प्राप्त करूं?

मान लें कि ये आपकी ORDER तालिका के कॉलम हैं जिन्हें DELIVERY_DATE कहा जाता है और आईडी आपका ट्रिगर कुछ इस तरह दिखना चाहिए:

CREATE OR REPLACE TRIGGER your_trigger_name
    BEFORE UPDATE ON Order
    FOR EACH ROW 
BEGIN
   if :new.delivery_date != :old.delivery_date
   then
       UPDATE Delivery d
       set d.delivery_date = :new.delivery_date
       where d.order_id = :new.id;
    end if;
END;

प्रत्येक पंक्ति के लिए खंड पर ध्यान दें:यह अलग-अलग पंक्तियों से मूल्यों को संदर्भित करने के लिए आवश्यक है। मैंने डिलीवरी पर अद्यतन निष्पादित करने के लिए परीक्षण करने के लिए एक आईएफ निर्माण का उपयोग किया है। यदि आपके ट्रिगर में कोई अन्य तर्क नहीं है तो आप इसे इस तरह लिख सकते हैं...

CREATE OR REPLACE TRIGGER your_trigger_name
    BEFORE UPDATE OF delivery_date ON Order
    FOR EACH ROW 
BEGIN
   UPDATE Delivery d
   set d.delivery_date = :new.delivery_date
   where d.order_id = :new.id;
END;

मैंने आपके द्वारा पूछे गए प्रश्न का उत्तर दिया है, लेकिन एक तरफ, मैं यह बताऊंगा कि आपका डेटा मॉडल उप-इष्टतम है। एक उचित रूप से सामान्यीकृत डिज़ाइन केवल एक तालिका पर DELIVERY_DATE को धारण करेगा:DELIVERY इसके लिए तार्किक स्थान प्रतीत होता है।



  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. sqldeveloper त्रुटि संदेश:नेटवर्क एडेप्टर कनेक्शन त्रुटि स्थापित नहीं कर सका

  3. आरएसी अनुक्रम विवाद

  4. सी # का उपयोग कर एक .SQL स्क्रिप्ट फ़ाइल को कैसे निष्पादित करें

  5. पीएल/एसक्यूएल के अंदर ओरेकल डाटाबेस ऑब्जेक्ट प्रकार बनाना संभव है?