Không thể đổi tên các cột trong chế độ xem PostgreSQL bằng TẠO HOẶC THAY THẾ


37

Trong PostreQuery 8.3, tôi đang cố gắng tạo một khung nhìn trông giống như một bảng hiện có nhưng có các tên cột khác nhau.

Những công việc này

CREATE OR REPLACE VIEW gfam.nice_builds AS 
 SELECT (family_tree.family_tree_id) as x,
        family_tree.family_tree_name, family_tree.family_tree_description
   FROM gfam.family_tree;

Ở trên tạo một bản sao của bảng Family_tree nhưng lần thử sau không thành công:

CREATE OR REPLACE VIEW gfam.nice_builds AS 
 SELECT (family_tree.family_tree_id) as x,
        family_tree.family_tree_name, family_tree.family_tree_description
   FROM gfam.family_tree;
  • LRI: không thể thay đổi tên của cột xem "Family_tree_id"

Làm cách nào để đổi tên cột?

Câu trả lời:


45

Tôi có thể tái tạo lỗi của bạn ... trong trường hợp của tôi, trước tiên tôi đã tạo một cột là 'ngày' sau đó là 'x' (đang cố gắng xem liệu đó có phải là vấn đề với một từ dành riêng hay không;

ERROR:  cannot change name of view column "date" to "x"

Nếu bạn phát hành drop viewlần đầu tiên, nó sẽ cho phép bạn tạo lại chế độ xem với tên đã thay đổi. Tôi không biết tại sao create or replacesẽ không làm điều đó.


Làm rõ bởi Colin 't Hart :

Các tài liệu đểCREATE VIEW giải thích nó khá tốt, tôi nghĩ:

Truy vấn mới phải tạo cùng một cột được tạo bởi truy vấn chế độ xem hiện tại (nghĩa là cùng tên cột theo cùng thứ tự và cùng loại dữ liệu), nhưng nó có thể thêm các cột bổ sung vào cuối danh sách.


Thật vậy, bạn phải thêm colum mới vào cuối danh sách cột CHỌN , nếu không bạn sẽ gặp lỗi!

1
Một chút bình luận ngoài chủ đề: Tôi đã gặp phải vấn đề tương tự khi cố gắng tổng hợp dữ liệu từ hai bảng với sự trợ giúp của chế độ xem. Nhưng thực sự tôi đã có các loại khác nhau ( VARCHARtrong bảng đầu tiên và TEXTtrong bảng thứ hai) cho các cột có cùng tên. Tôi đã dành rất nhiều thời gian để điều tra cho đến khi tôi nhận thấy rằng IDE hiển thị VARCHARcho cả hai bảng! Chỉ có thuần khiết mới pg_dumpgiúp tôi.
flaz14

31

Bạn cũng có thể sử dụng ALTER TABLE tbl RENAME COLUMN foo TO barđể đổi tên các cột xem.


Cái gì tblđây Đây có phải là bảng thực tế cho chế độ xem được tạo hay đây là tên chế độ xem?
Eugen Konkov

@EugenKonkov Có vẻ như là quan điểm. Tôi đã thử nghiệm và nó hoạt động
DatabaseShouter
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.