मैं अपने डेटाबेस में एक विषय के लिए एकाधिक पते स्टोर करने का एक तरीका ढूंढना चाहता हूं, प्रति विषय केवल एक डिफ़ॉल्ट पता के साथ।दो कॉलम पर अनन्य बाधा पोस्ट करें: इंटीजर और बूलियन
एक लम्बी कहानी ही समाप्त हो करने के लिए, मान लीजिए कि हम एक मेज है:
CREATE TABLE test
(
id integer NOT NULL,
active boolean NOT NULL,
CONSTRAINT pk_id PRIMARY KEY (id)
)
तालिका में प्रत्येक आईडी के लिए, वहाँ अधिकतम 1 सच सक्रिय मान होना चाहिए।
मैं इसे कैसे प्राप्त कर सकता हूं?
धन्यवाद।
create unique index some_index on test (id) where active;
@ThiefMaster के रूप में कहा गया है प्राथमिक सूचकांक निकाल देना चाहिए:
दरअसल आपको * कुछ भी * करने की ज़रूरत नहीं है क्योंकि 'आईडी' प्राथमिक कुंजी होने के कारण यह अद्वितीय है इसलिए * एक ही आईडी के साथ * दो पंक्तियां नहीं हो सकती हैं। – ThiefMaster
यदि आप प्राथमिक के रूप में 'id' नहीं चाहते हैं तो आपको एक ट्रिगर लिखना होगा: http://www.postgresql.org/docs/9.1/static/sql-createtrigger.html लेकिन शायद वह नहीं जो आप चाहते हैं। –