2009-06-09 15 views
45

में प्रतिबंध नाम अपडेट पोस्टग्रेज़ में बाधा नाम बदलना संभव है? मैं एक पी के साथ जोड़ा है:PostgreSQL

ALTER TABLE contractor_contractor ADD CONSTRAINT commerce_contractor_pkey PRIMARY KEY(id); 

और मैं प्रणाली के बाकी हिस्सों के साथ संगत होना करने के लिए इसके लिए अलग नाम है करने के लिए करना चाहते हैं। क्या मैं मौजूदा पीके बाधा को हटा दूंगा और एक नया बनाउंगा? या पर इसका 'सॉफ्ट' तरीका है?

धन्यवाद!

उत्तर

58

प्राथमिक कुंजी के लिए, आप बस करने के लिए सक्षम होना चाहिए:

ALTER INDEX commerce_contractor_pkey RENAME TO whatever_new_name 

कि बाधाओं के अन्य प्रकारों के लिए हालांकि काम नहीं करेगा। पुराने विकल्प को छोड़ने और एक नया निर्माण करने का सबसे अच्छा विकल्प है। इसे लेनदेन के अंदर करना सुनिश्चित करें, इसलिए सिस्टम पुनर्निर्माण के दौरान इसके बिना नहीं जीता है। (और अगर आप किसी लेनदेन में यह नहीं कर सकते,, नया एक पहले बनाने का ध्यान रखें पुराने छोड़ने से पहले)

+0

धन्यवाद - क्वेरी सही काम करती है! –

77

PostgreSQL 9.2 या नए में एक मौजूदा बाधा नाम बदलने के लिए, आप उपयोग कर सकते हैं ALTER TABLE:

ALTER TABLE name RENAME CONSTRAINT constraint_name TO new_constraint_name; 
+0

किस psql संस्करण के साथ? मुझे लगता है कि यह 9.1 – Regisz

+5

@Regisz PostgreSQL> = 9.2 –

+0

@ArturoHerrero के साथ काम नहीं करता है, हम एक बार में कई बाधाओं पर नाम बदल सकते हैं, यदि हां, तो कैसे? – Erlan