mysql stored procedure checking if record exists -


मैंने निम्न संग्रहीत कार्यविधि बनाई है:

  सेट करें DEFINER = `root` @` localhost `` `एडीसी_एम` सीआर (50), IN` reg_code` CHAR (2) में,` `रेग_नाम` सीआरएआर (100) में,` कोड` सीआर में (20) `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` अक्षांश `डीसीआईएमएएल (10,4),` अंक 'TINYINT (3) में, `बोनस अंक' TINYINT (3) में,` वैध_ से 'दिनांक, `मान्य_तो` दिनांक में) BEGIN घोषित एशॉक_आईड स्माललिंग (5); Region_id स्मॉलिंग (5) घोषित; घोषित करें summit_id MEDIUMINT (8); - एसोसिएशन की जांच करें कि दिए गए कोड और नाम से संबद्धता पहले से मौजूद है एसोसिएशन WHERE कोड = assoc_code LIMIT 1 से assoc_id में चयन आईडी; यदि (assoc_id नल है) तो संघ में सम्मिलित करें (कोड, नाम) मूल्य (assoc_code, assoc_name); Setoc_id = सेट करें (last_insert_id () चुनें); अगर अंत; - क्षेत्र की जांच करें कि दिए गए कोड और नाम के साथ एक क्षेत्र पहले से ही मौजूद है SET region_id = (क्षेत्र से क्षेत्र का चयन करें जहां कोड = reg_code और name = reg_name और association_id = assoc_id); यदि (क्षेत्र_आईडी नल है) तो क्षेत्र में सम्मिलित करें (एसोसिएशन, कोड, नाम) मूल्य (एएसओसीआईडी, रेगसीड, रेग_एनए); सेट region_id = (last_insert_id () चुनें); अगर अंत; - जमा करें जांचें कि क्या दिए गए पैरामीटर के साथ एक शिखर पहले से ही मौजूद है SET summit_id = (SELECT id FROM summit WHERE association_id = assoc_id और region_id = region_id); IF (summit_id IS नल है) तो सम्मिलित करें (कोड, नाम, sota_id, association_id, region_id, altitude_m, altitude_ft, रेखांश, अक्षांश, अंक, बोनस_पइंट, वैध_प्रकाश, मान्य_तो) मूल्य (कोड, नाम, sota_id, assoc_id, region_id, altitude_m) , ऊंचाई_आइट, रेखांश, अक्षांश, अंक, बोनस_पइंट, वैध_फ्रेम, वैध_ टू); अगर अंत; अंत $ $   

मूल रूप से, यह जांचना चाहिए कि क्या कुछ तालिकाओं में एक रिकॉर्ड मौजूद है और, यदि ऐसा नहीं है, तो उसे डालने और डाला आईडी (ऑटो वेतन वृद्धि) का उपयोग करना चाहिए। समस्या यह है कि भले ही रिकॉर्ड मौजूद है (उदाहरण के लिए एसोसिएशन तालिका में), एएसओसीआईआईडी वापस रिक्त रहता है और इससे दोहराव रिकॉर्ड हो जाता है। मैं संग्रहित प्रक्रियाओं में नया हूँ इसलिए मैं कुछ बेवकूफ़ त्रुटियों को कर सकता हूं मैं इस एसपी को घंटों तक डिबग करने की कोशिश कर रहा था, लेकिन मुझे समस्या नहीं मिल रही है।

एक नौसिखिया गलती । मैं क्षेत्र की तुलना में तालिका नाम निर्दिष्ट करना भूल गया और इससे परम नामों (उदाहरण के लिए परम नाम) के साथ कुछ टकराव हो। एक अच्छा विचार पैरामीटर (जैसे p_) के लिए किसी प्रकार का उपसर्ग निर्दिष्ट करना है और सपा में हमेशा तालिका का नाम निर्दिष्ट करना है।

Comments

Popular posts from this blog

php - PDO bindParam() fatal error -

logging - How can I log both the Request.InputStream and Response.OutputStream traffic in my ASP.NET MVC3 Application for specific Actions? -

java - Why my included JSP file won't get processed correctly? -