sql >> Database teknologi >  >> RDS >> PostgreSQL

Er navn et særligt søgeord i PostgreSQL?

Dette er en kendt forvirrende "funktion" med en smule historie. Specifikt kan du henvise til tupler fra tabellen som helhed med tabelnavnet og derefter tilføje .name ville påberåbe name funktion på dem (dvs. det ville blive fortolket som select name(t) from t ).

På et tidspunkt i PostgreSQL 9-udviklingen blev Istr ryddet lidt op i dette. Du kan stadig select t from t eksplicit for at få rows-as-tuples-effekten, men du kan ikke anvende en funktion på samme måde. Altså på PostgreSQL 8.4.9 , denne:

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

producerer det bizarre:

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

men på 9.1.1 producerer:

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

som du ville forvente.

Så for specifikt at besvare dit spørgsmål:name er en standardtype i PostgreSQL (bruges i kataloget til tabelnavne osv.) og også nogle standardfunktioner til at konvertere ting til name type. Det er faktisk ikke reserveret, bare de objekter, der eksisterer kaldet det, plus en eller anden historisk mærkelig syntaks, gjorde tingene forvirrende; og dette er blevet rettet af udviklerne i de seneste versioner.



  1. Er der en måde at eksekvere kode dynamisk i MySQL, svarende til at eksekvere med det samme i Oracle?

  2. Marker for at indsætte eller opdatere tabel

  3. Brug af tråde til at lave databaseanmodninger

  4. Hvordan tilføjer man PostgreSQL-datakilde til WildFly 9.0?