PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Có thể thay đổi thứ tự tự nhiên của các cột trong Postgres không?

Thực ra bạn có thể thay đổi thứ tự cột một cách thẳng thắn, nhưng tôi không khuyên bạn nên làm như vậy, và bạn nên hết sức cẩn thận nếu quyết định làm điều đó.

ví dụ:

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

Bây giờ đối với một chút khó khăn, bạn cần kết nối với cơ sở dữ liệu của mình bằng người dùng postgres để bạn có thể sửa đổi các bảng hệ thống.

# 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 là một cột duy nhất, vì vậy bạn cần sử dụng giá trị tạm thời khi sửa đổi số cột như:

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

Một lần nữa, vì điều này đang diễn ra xung quanh các bảng hệ thống cơ sở dữ liệu, hãy hết sức thận trọng nếu bạn cảm thấy mình thực sự cần làm điều này.

Điều này đang hoạt động kể từ postgres 8.3, với các phiên bản trước, số tiền của bạn có thể thay đổi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Việc gọi hàm hoặc thủ tục đã lưu trữ sẽ không chèn và vẫn tiếp tục các thay đổi

  2. Truy vấn cho phần tử của mảng trong cột JSON

  3. Làm thế nào để cài đặt libpq-fe.h?

  4. Đặt giá trị trong phần phụ thuộc của biểu đồ Helm

  5. Cách justify_days () hoạt động trong PostgreSQL