2012-08-13 14 views
83

को बूलियन स्तंभ जोड़ने falsePostgreSQL - टेबल सामान्य सेट करें

ALTER TABLE users 
ADD "priv_user" BIT 
ALTER priv_user SET DEFAULT '0' 

धन्यवाद का डिफ़ॉल्ट मान के साथ एक मेज के लिए एक स्तंभ जोड़ने के लिए इस उचित PostgreSQL वाक्य रचना है!

+2

क्या आप थोड़ा कॉलम या वास्तविक 'बूलियन' कॉलम चाहते हैं? – rfusca

उत्तर

158
ALTER TABLE users 
    ADD COLUMN "priv_user" BOOLEAN DEFAULT FALSE; 

आप भी सीधे निर्दिष्ट कर सकते हैं नहीं NULL

ALTER TABLE users 
    ADD COLUMN "priv_user" BOOLEAN NOT NULL DEFAULT FALSE; 

क्रेग के रूप में उल्लेख किया भरा टेबल इसे और अधिक इसे में विभाजित करने के लिए कुशल है चरण:

ALTER TABLE users ADD COLUMN priv_user BOOLEAN; 
UPDATE users SET priv_user = 'f'; 
ALTER TABLE users ALTER COLUMN priv_user SET NOT NULL; 
ALTER TABLE users ALTER COLUMN priv_user SET DEFAULT FALSE; 
+17

ध्यान दें कि यदि आपकी तालिका बड़ी है तो इसमें काफी समय लग सकता है और पूरे समय तालिका को लॉक कर सकता है। इसे चरणों में विभाजित करना तेज़ है: 'वैकल्पिक तालिका उपयोगकर्ताओं के साथ डिफ़ॉल्ट रूप से कॉलम जोड़ें' COLUMN priv_user BOOLEAN; ', फिर' उपयोगकर्ताओं को SET priv_user = 'f' अपडेट करें; 'और अंततः यदि आपको तालिका में अन्य उपयोगकर्ताओं को बदलने की आवश्यकता है priv_user सेट न करें; '। –

+0

चरण में विभाजित दृष्टिकोण डिफ़ॉल्ट मान जोड़ नहीं रहा है। क्या यह अभी भी एक अलग चरण में "डेफॉल्ट" एफ जोड़ने के लिए तेज़ है? –

+0

हां एक अलग चरण में डिफ़ॉल्ट जोड़ना केवल मेटा डेटा ऑपरेशन है और इस प्रकार बहुत तेज़ है। – Eelke

13

आप एक वास्तविक बूलियन स्तंभ चाहते हैं:

ALTER TABLE users ADD "priv_user" boolean DEFAULT false; 
+0

नोट: पोस्टग्रेज़ के सभी संस्करण इसे एक पंक्ति में परिभाषित करने का समर्थन नहीं करते हैं। –

5

I f आप postgresql का उपयोग कर रहे हैं तो आपको बूलियन के रूप में निचले मामले में कॉलम प्रकार BOOLEAN का उपयोग करना होगा।

वैकल्पिक तालिका उपयोगकर्ता "priv_user" बूलियन DEFAULT झूठी जोड़ें;

8
बस भविष्य में संदर्भ के

, अगर आप पहले से ही एक बूलियन स्तंभ है और तुम सिर्फ एक डिफ़ॉल्ट जोड़ना चाहते हैं:

ALTER TABLE users 
    ALTER COLUMN priv_user SET DEFAULT false; 
1

psql में बदल इस

Alter table users add column priv_user boolean default false ; 

तरह स्तंभ क्वेरी सिंटैक्स बूलियन वैल्यू (सच्चा-झूठा) डीबी में (टीएफ) वैल्यू में सेव करें।

संबंधित मुद्दे