आप वास्तव में सीधे कॉलम ऑर्डर बदल सकते हैं, लेकिन मैं शायद ही इसकी अनुशंसा करता हूं, और यदि आप इसे करने का निर्णय लेते हैं तो आपको बहुत सावधान रहना चाहिए।
उदाहरण के लिए।
# CREATE TABLE test (a int, b int, c int);
# INSERT INTO test VALUES (1,2,3);
# SELECT * FROM test;
a | b | c
---+---+---
1 | 2 | 3
(1 row)
अब मुश्किल बिट के लिए, आपको पोस्टग्रेज़ उपयोगकर्ता का उपयोग करके अपने डेटाबेस से कनेक्ट करने की आवश्यकता है ताकि आप सिस्टम टेबल को संशोधित कर सकें।
# SELECT relname, relfilenode FROM pg_class WHERE relname='test';
relname | relfilenode
---------+-------------
test_t | 27666
(1 row)
# SELECT attrelid, attname, attnum FROM pg_attribute WHERE attrelid=27666;
attrelid | attname | attnum
----------+----------+--------
27666 | tableoid | -7
27666 | cmax | -6
27666 | xmax | -5
27666 | cmin | -4
27666 | xmin | -3
27666 | ctid | -1
27666 | b | 1
27666 | a | 2
27666 | c | 3
(9 rows)
attnum एक अद्वितीय स्तंभ है, तो आप जब आप इस तरह के रूप स्तंभ संख्या संशोधित कर रहे हैं एक अस्थायी मान का उपयोग करने की जरूरत है:,
# UPDATE pg_attribute SET attnum=4 WHERE attname='a' AND attrelid=27666;
UPDATE 1
# UPDATE pg_attribute SET attnum=1 WHERE attname='b' AND attrelid=27666;
UPDATE 1
# UPDATE pg_attribute SET attnum=2 WHERE attname='a' AND attrelid=27666;
UPDATE 1
# SELECT * FROM test;
b | a | c
---+---+---
1 | 2 | 3
(1 row)
फिर क्योंकि इस डेटाबेस प्रणाली तालिकाओं के साथ चारों ओर खेल रहा है , अगर आपको लगता है कि आपको वास्तव में ऐसा करने की ज़रूरत है तो अत्यधिक सावधानी बरतें।
यह postgres 8.3 के रूप में काम कर रहा है, पहले के संस्करण के साथ, अपने लाभ भिन्न हो सकते।
यह बहुत मुश्किल है, कई सिस्टम ऑब्जेक्ट कॉलम नंबर का संदर्भ लेते हैं। जब आप कॉलम 2 और 3 फ्लिप करते हैं, तो किसी ऑब्जेक्ट को कॉलम 2 से कुछ चाहिए तो आपको परेशानी होगी। यह अब nr 3 और आपका डेटाबेस है अब भ्रष्ट है। pg_constraint पर एक नज़र डालें, यह डेटाबेस सेवर हो सकता है। –
इस तरह आप अपने टैब में सभी डेटा खो देते हैं लेस। –
असमर्थित होने के अलावा, यह तकनीक कॉलम नामों को उनकी सामग्री के सम्मान के बिना स्वैप करती है, जो (उत्तर स्वीकार किए जाने के बावजूद) सवाल नहीं पूछ रहा है। और यदि वह इसके लिए पूछ रहा था, 'वैकल्पिक तालिका ... नाम COLUMN ...' का उपयोग इसके बजाय किया जाना चाहिए, क्योंकि यह एक ही परिणाम प्राप्त करता है लेकिन भरोसेमंद। –