PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Czy można zmienić naturalną kolejność kolumn w Postgresie?

Możesz po prostu od razu zmienić kolejność kolumn, ale nie polecam tego i powinieneś być bardzo ostrożny, jeśli zdecydujesz się to zrobić.

np.

# 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)

Teraz trudna sprawa, musisz połączyć się ze swoją bazą danych za pomocą użytkownika postgres, aby móc modyfikować tabele systemowe.

# 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 to unikatowa kolumna, więc podczas modyfikowania numerów kolumn jako takich należy użyć wartości tymczasowej:

# 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)

Ponownie, ponieważ to bawi się tabelami systemowymi baz danych, zachowaj szczególną ostrożność, jeśli uważasz, że naprawdę musisz to zrobić.

Działa to od postgres 8.3, z wcześniejszymi wersjami Twój przebieg może się różnić.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Znajdź n najbliższych sąsiadów dla danego punktu za pomocą PostGIS?

  2. Porównanie systemów równoważenia obciążenia dla PostgreSQL

  3. Właściciel bazy postgresql nie może uzyskać dostępu do bazy danych - Nie znaleziono relacji.

  4. Jak ukryć komunikaty INFO podczas uruchamiania skryptów psql?

  5. Sposoby dostępu do bazy danych Oracle w PostgreSQL