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

Czy name jest specjalnym słowem kluczowym w PostgreSQL?

Jest to znana „funkcja” myląca z odrobiną historii. W szczególności możesz odwołać się do krotek z tabeli jako całości za pomocą nazwy tabeli, a następnie dołączyć .name wywołałby name funkcji na nich (tzn. będzie interpretowane jako select name(t) from t ).

W pewnym momencie rozwoju PostgreSQL 9 Istr zostało to nieco uporządkowane. Nadal możesz select t from t jawnie, aby uzyskać efekt wierszy jako krotek, ale nie można zastosować funkcji w ten sam sposób. Więc na PostgreSQL 8.4.9 , to:

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

produkuje dziwaczne:

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

ale na 9.1.1 produkuje:

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

jak można się spodziewać.

Tak więc, aby konkretnie odpowiedzieć na twoje pytanie:name jest standardowym typem w PostgreSQL (używanym w katalogu dla nazw tabel itp.), a także kilkoma standardowymi funkcjami do konwersji rzeczy na name rodzaj. W rzeczywistości nie jest to zarezerwowane, tylko obiekty, które istnieją i jakaś historyczna dziwna składnia, sprawiają, że wszystko jest zagmatwane; i zostało to naprawione przez programistów w ostatnich wersjach.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. migracja z sqlite do postgresql w django

  2. Czy funkcje PostgreSQL są transakcyjne?

  3. Ebean szuka niewłaściwej nazwy sekwencji w Play Framework 2

  4. Jak wybrać zakres dat w postgresie?

  5. Monitorowanie PostgreSQL w środowisku hybrydowym