मुझे एक सहायक मिला है जो मेरे लिए बल्क अपडेट करने के लिए कुछ कोड जनरेट कर रहा है और SQL बनाता है जो इस तरह दिखता है:
(दोनों सक्रिय और मुख्य क्षेत्र प्रकार के हैं boolean
)
UPDATE fields as t set "active" = new_values."active","core" = new_values."core"
FROM (values
(true,NULL,3419),
(false,NULL,3420)
) as new_values("active","core","id") WHERE new_values.id = t.id;
हालांकि इसके साथ असफल:
ERROR: column "core" is of type boolean but expression is of type text
मैं इसे ::boolean
नल में जोड़कर काम करने के लिए प्राप्त कर सकता हूं , लेकिन यह सिर्फ अजीब लगता है, NULL को प्रकार क्यों माना जाता है TEXT
?
इसके अलावा यह थोड़ा मुश्किल है क्योंकि इसे यह जानने के लिए कि इसे किस प्रकार से NULLs (कॉलम की सूची और मानों को वर्तमान में JSON ऑब्जेक्ट्स के एक साधारण सरणी से ऑटोजेनरेटेड किया जा रहा है) को जानने के लिए कोड की थोड़ी सी आवश्यकता होगी। ।
यह क्यों आवश्यक है और क्या एक अधिक सुरुचिपूर्ण समाधान है जिसे NULL के प्रकार को जानने के लिए जनरेटिंग कोड की आवश्यकता नहीं है?
यदि यह प्रासंगिक है, तो मैं ऐसा करने के लिए Node.JS पर सीक्वल का उपयोग कर रहा हूं , लेकिन पोस्टग्रेजेस लाइन क्लाइंट में भी वही परिणाम मिल रहा है।
Cannot cast type boolean to bigint in column 1
(पहले फ़ील्ड स्टेटमेंट के बीच :: पर त्रुटि बिंदु) पैदा करता है