जब डालने के निम्नलिखित प्रकार कर मैं निम्नलिखित त्रुटि मिल रही मिलान बाधा:कोई अनोखी या बहिष्कार पर संघर्ष
क्वेरी:
INSERT INTO accounts (type, person_id) VALUES ('PersonAccount', 1) ON
CONFLICT (type, person_id) WHERE type = 'PersonAccount' DO UPDATE SET
updated_at = EXCLUDED.updated_at RETURNING *
त्रुटि:
SQL execution failed (Reason: ERROR: there is no unique or exclusion constraint matching the ON CONFLICT specification)
मैं एक अद्वितीय इंडेक्स भी है:
CREATE UNIQUE INDEX uniq_person_accounts ON accounts USING btree (type,
person_id) WHERE ((type)::text = 'PersonAccount'::text);
बात यह है कि कभी-कभी यह काम करता है, लेकिन हर बार नहीं। मैं यादृच्छिक रूप से उस अपवाद को प्राप्त करता है, जो वास्तव में अजीब है। ऐसा लगता है कि यह उस INDEX तक नहीं पहुंच सकता है या यह नहीं जानता कि यह मौजूद है।
कोई सुझाव?
मैं PostgreSQL 9.5.5 का उपयोग कर रहा हूं।
उदाहरण कोड की खोज या खाता बनाना की कोशिश करता है कि निष्पादित करते समय:
INSERT INTO accounts (type, person_id, created_at, updated_at) VALUES ('PersonAccount', 69559, '2017-02-03 12:09:27.259', '2017-02-03 12:09:27.259') ON CONFLICT (type, person_id) WHERE type = 'PersonAccount' DO UPDATE SET updated_at = EXCLUDED.updated_at RETURNING *
SQL execution failed (Reason: ERROR: there is no unique or exclusion constraint matching the ON CONFLICT specification)
इस मामले में, मुझे यकीन है कि खाता मौजूद नहीं है हूँ। इसके अलावा, जब व्यक्ति के पास पहले से ही खाता होता है तो यह त्रुटि को कभी भी आउटपुट नहीं करता है। समस्या यह है कि, कुछ मामलों में, यदि अभी तक कोई खाता नहीं है तो यह भी काम करता है। क्वेरी बिल्कुल वही है।
शायद क्योंकि यह आंशिक सूचकांक है .. –
आप विस्तार से बता सकते हैं?? –
@ वाओट्सुन आंशिक अनुक्रमणिका 'ऑन कॉन्फ्लिक्ट' – pozs