Postgres में अद्वितीय अनुक्रमणिका बराबर . होने वाले मानों पर आधारित होती हैं , लेकिन NULL कभी भी अन्य NULLs सहित किसी भी चीज़ के बराबर नहीं होता है। इसलिए NULL delete_at मान वाली कोई भी पंक्ति किसी भी अन्य संभावित पंक्ति से अलग होती है - इसलिए आप उनमें से किसी भी संख्या को सम्मिलित कर सकते हैं।
इसका एक तरीका आंशिक अनुक्रमणिका . बनाना है , NULLs के साथ और बिना पंक्तियों के लिए अलग-अलग नियम लागू करना:
CREATE UNIQUE INDEX ... ON subscriptions
(user_id, class_type_id) WHERE deleted_at IS NULL;
CREATE UNIQUE INDEX ... ON subscriptions
(user_id, class_type_id, deleted_at) WHERE deleted_at IS NOT NULL;