it-swarm.asia

Tidak dapat mengganti nama kolom dalam tampilan PostgreSQL dengan CREATE OR REPLACE

Di PostreSQL 8.3, saya mencoba membuat tampilan yang akan terlihat seperti tabel yang sudah ada tetapi memiliki nama kolom yang berbeda.

Ini bekerja

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;

Di atas membuat duplikat dari tabel family_tree tetapi upaya berikut gagal:

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;
  • GALAT: tidak dapat mengubah nama kolom tampilan "family_tree_id"

Bagaimana saya bisa mengganti nama kolom?

40

Saya dapat mereproduksi kesalahan Anda ... dalam kasus saya, saya membuat kolom pertama sebagai 'tanggal' kemudian sebagai 'x' (mencoba untuk melihat apakah itu masalah dengan Word yang dipesan; itu bukan:

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

Jika Anda mengeluarkan drop view pertama, itu akan memungkinkan Anda membuat kembali tampilan dengan nama yang diubah. Saya tidak tahu mengapa create or replace tidak akan melakukannya.


Klarifikasi oleh Colin 't Hart :

The dokumentasi untuk CREATE VIEW menjelaskannya dengan cukup baik, saya pikir:

Kueri baru harus menghasilkan kolom yang sama dengan yang dihasilkan oleh permintaan tampilan yang ada (yaitu, nama kolom yang sama dalam urutan yang sama dan dengan tipe data yang sama), tetapi itu dapat menambahkan kolom tambahan ke akhir daftar.

50
Joe

Kamu bisa menggunakan ALTER TABLE tbl RENAME COLUMN foo TO bar untuk mengganti nama kolom tampilan juga.

31
Peter Eisentraut