PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Apakah nama kata kunci khusus di PostgreSQL?

Ini adalah "fitur" yang membingungkan dengan sedikit sejarah. Secara khusus, Anda bisa merujuk ke tupel dari tabel secara keseluruhan dengan nama tabel, dan kemudian menambahkan .name akan memanggil name fungsi pada mereka (yaitu akan ditafsirkan sebagai select name(t) from t ).

Di beberapa titik dalam pengembangan PostgreSQL 9, Istr ini sedikit dibersihkan. Anda masih dapat melakukan select t from t secara eksplisit untuk mendapatkan efek baris sebagai tupel, tetapi Anda tidak dapat menerapkan fungsi dengan cara yang sama. Jadi di PostgreSQL 8.4.9 , ini:

create table t(id serial primary key, value text not null);
insert into t(value) values('foo');
select t.name from t;

menghasilkan yang aneh:

  name   
---------
 (1,foo)
(1 row)

tetapi pada 9.1.1 menghasilkan:

ERROR:  column t.name does not exist
LINE 1: select t.name from t;
               ^

seperti yang Anda harapkan.

Jadi, untuk menjawab pertanyaan Anda secara spesifik:name adalah tipe standar di PostgreSQL (digunakan dalam katalog untuk nama tabel dll) dan juga beberapa fungsi standar untuk mengubah sesuatu menjadi name Tipe. Itu tidak benar-benar dicadangkan, hanya objek yang ada yang disebut itu, ditambah beberapa sintaks aneh historis, membuat segalanya membingungkan; dan ini telah diperbaiki oleh pengembang di versi terbaru.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. psycopg2 cursor.execute() dengan parameter query SQL menyebabkan kesalahan sintaks

  2. Bagaimana cara menghitung hari kecuali hari Minggu antara dua tanggal di Postgres?

  3. Bagaimana cara saya melewati paramater jdbc menggunakan springboot dan hibernate?

  4. Penetapan nilai variabel menggunakan klausa RETURNING

  5. Kesalahan Makefile PGXS tidak dapat ditemukan saat menginstal PostGis di Debian