मैं एक PostgreSQL तालिका को कैसे बदलूं और एक कॉलम अद्वितीय बनाऊं?


166

मेरे पास PostgreSQL में एक टेबल है जहां स्कीमा इस तरह दिखता है:

CREATE TABLE "foo_table" (
    "id" serial NOT NULL PRIMARY KEY,
    "permalink" varchar(200) NOT NULL,
    "text" varchar(512) NOT NULL,
    "timestamp" timestamp with time zone NOT NULL
)

अब मैं तालिका के भीतर तालिका द्वारा पर्मलिंक को अद्वितीय बनाना चाहता हूं। क्या कोई मेरी इसके साथ मदद कर सकता है?

TIA


2
create unique index on foo_table (permalink)
a_horse_with_no_name

जवाबों:



231

या, DB ने स्वचालित रूप से एक बाधा नाम निर्दिष्ट किया है:

ALTER TABLE foo ADD UNIQUE (thecolumn);

1
यदि आप ऐसा करते हैं, पोस्टग्रेट्स बाधा पैदा करने वाले हैं लेकिन क्या नाम "स्वचालित रूप से" शब्द "ऐड" है। मैंने अभी-अभी कोशिश की है
संती

जब मैं ऊपर सिंटैक्स का उपयोग करता हूं, तो Postgress नाम के साथ नया कंट्रोवर्सी बनाता है, जिससे mytable_mycolumn_key मैं काफी खुश हूँ :-)
एडम

41

1 कॉलम से अधिक का एक अनूठा अवरोध बनाना भी संभव है:

ALTER TABLE the_table 
    ADD CONSTRAINT constraint_name UNIQUE (column1, column2);

यह कुछ इस तरह से काम करने के लिए प्रतीत नहीं होता है: ALTER TABLE actions ADD CONSTRAINT actions_unique_constraint UNIQUE (payload::text, name);याALTER TABLE actions ADD CONSTRAINT actions_unique_constraint UNIQUE ((payload::text), name);
२३:२२
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.