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

चाइल्ड रिकॉर्ड का चयन करने, उनके मूल्यों को गुणा करने और पैरेंट रिकॉर्ड को अपडेट करने के लिए ट्रिगर करें

आपके पास कई मुद्दे हैं, लेकिन सबसे बुनियादी बात यह है कि आपको ऐसा बिल्कुल नहीं करना चाहिए। स्टोर करने की कोशिश करना - और एक साथ रखना - एक मूल्य जिसकी गणना हमेशा की जा सकती है वह एक मौलिक डिजाइन दोष है।

अब, कोड पर ही। आपके पास

SELECT SUM(VALUE) into product

आपके INTO का लक्ष्य घोषित चर होना चाहिए। ऐसा लगता है कि आप SELECT .. INTO कॉलम नाम का प्रयास कर रहे हैं।

कॉलम नामों के बीच अंतर करने के लिए आपको स्थानीय चरों का नाम देना चाहिए। इस प्रकार, के बजाय

DECLARE
value number;
amount number;
total number;

आपके पास होना चाहिए

DECLARE
v_value number;
v_amount number;
v_total number;

इसके विपरीत, आपको अपनी टेबल और कॉलम के लिए मानक नामकरण परंपराओं के बारे में सोचना चाहिए। कॉलम के लिए मैं के रूप में नामों का उपयोग और अनुशंसा करता हूं, इस प्रकार ORDER_ID, PRODUCT_NAME, आदि। PRODUCT_ID_PRODUCT, ORDER_ID_ORDER के साथ यह क्या है? कॉलम नामों में तालिका के नाम को दोहराना आमतौर पर फायदेमंद नहीं होता है। हालांकि कई बार यह समझ में आता है क्योंकि यह अभी भी विशेषण_संज्ञा प्रारूप का अनुसरण करता है, जैसे कि ORDERS तालिका के id कॉलम को ORDER_ID नाम दिया गया है। टेबल नामों के बारे में भी सोचें, मैं आमतौर पर अपने टेबल नामों को बहुवचन संज्ञा बना देता हूं क्योंकि टेबल कुछ इकाई के कई उदाहरणों को ट्रैक करते हैं। यदि स्तंभ नाम (जैसे ORDER_ID) के लिए तालिका का नाम समझ में आता है, तो यह एकवचन होगा, क्योंकि एक व्यक्तिगत पंक्ति इकाई के एकल उदाहरण को ट्रैक करती है।

अंत में, तालिकाओं को जाने बिना कोडिंग संशोधन की अनुशंसा करना कठिन है। आपने उनका अस्पष्ट विवरण दिया है, लेकिन बेहतर होगा कि सब कुछ मेज पर रख दिया जाए। देखें minimal-reproducible-example



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. तालिका से MIN और MAX दोनों का चयन करना अपेक्षा से धीमा है

  2. Oracle दिनांक स्वरूप

  3. Oracle:डेटा आयात करते समय संभावित एन्कोडिंग समस्याएं

  4. Oracle में हमेशा 2 दशमलव स्थान प्राप्त करने का सबसे अच्छा तरीका क्या है?

  5. तालिका नाम से %ROWTYPE चर