पोस्टग्रेज़ उस फ़ंक्शन पर कुछ सरल जाँच चलाता है जिसे आप बनाने का प्रयास कर रहे हैं, और यह पाता है (सही ढंग से) कि तालिका work_list
(अभी तक) मौजूद नहीं है। मुझे दो विकल्प दिखाई देते हैं:
<हड़ताल> <एच4>1. "इसे तब तक नकली बनाएं जब तक आप इसे न बना लें" फ़ंक्शन बनाने से पहले वास्तव में (अस्थायी) तालिका बनाएं। सत्र के अंत में अस्थायी तालिका चली जाएगी, लेकिन एक बार फ़ंक्शन बन जाने के बाद, आपने इस परीक्षा को हमेशा के लिए पास कर लिया है। संघर्ष से बचने के लिए सत्र। बेहतर है, हालांकि:CREATE TEMP TABLE IF NOT EXISTS
आपके फ़ंक्शन में (9.1+ पोस्ट करता है)। यदि टेबल पहले से मौजूद है तो आप उसे छोटा करना चाह सकते हैं ...
हालाँकि (नीचे टिप्पणियाँ देखें), मैनुअल को उद्धृत करते हुए
बोल्ड जोर मेरा।
<एच4>2. इसके बजाय PL/pgSQL का उपयोग करें
plpgsql में चेक कम विस्तृत हैं। यदि Postgres अभी भी शिकायत करता है (जो इस मामले में नहीं है), तो आप एसक्यूएल को EXECUTE
के साथ गतिशील रूप से निष्पादित करें
।
इसके अलावा:कई मामलों में, कोने के चारों ओर अस्थायी तालिका के बिना एक अधिक प्रदर्शनकारी समाधान होता है ...