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

PostgreSQL पर एक सशर्त अद्वितीय अनुक्रमणिका कैसे जोड़ें

एक UNIQUE बनाएं (product_id, variant_id) . पर बहु-स्तंभ अनुक्रमणिका :

CREATE UNIQUE INDEX line_items_prod_var_idx ON line_items (product_id, variant_id);

हालांकि, यह (1, NULL) . की कई प्रविष्टियों की अनुमति देगा (product_id, variant_id) . के लिए क्योंकि NULL मानों को समान नहीं माना जाता है।
उसके लिए क्षतिपूर्ति करने के लिए, अतिरिक्त रूप से एक आंशिक UNIQUE बनाएं product_id . पर अनुक्रमणिका :

CREATE UNIQUE INDEX line_items_prod_var_null_idx ON line_items (product_id)
WHERE variant_id IS NULL;

इस तरह आप (1,2) . दर्ज कर सकते हैं , (1,3) और (1, NULL) , लेकिन उनमें से कोई भी दूसरी बार नहीं। साथ ही एक या दोनों कॉलम पर शर्तों के साथ प्रश्नों को गति देता है।

हाल ही में, dba.SE पर संबंधित उत्तर, लगभग सीधे आपके मामले पर लागू होता है:

  • PostgreSQL बहु-स्तंभ अद्वितीय बाधा और NULL मान


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PG::त्रुटि:SELECT DISTINCT, ORDER BY एक्सप्रेशन चुनिंदा सूची में दिखना चाहिए

  2. PostgreSQL में एक बाधा का नाम कैसे खोजें

  3. पहले से इंस्टॉल किए गए hstore एक्सटेंशन के साथ एक नया डेटाबेस कैसे बनाएं?

  4. varchar के लिए array_agg () का उपयोग कैसे करें []

  5. पोस्टग्रेज में एक जेसन सरणी को पंक्तियों में कैसे बदलें