Това е известна объркваща „функция“ с малко история. По-конкретно, можете да се обърнете към кортежи от таблицата като цяло с името на таблицата и след това да добавите .name
ще извика name
функция върху тях (т.е. ще се интерпретира като select name(t) from t
).
В някакъв момент от разработката на PostgreSQL 9, Istr това беше малко почистено. Все още можете да select t from t
изрично, за да получите ефекта на редове като кортежи, но не можете да приложите функция по същия начин. Така че на PostgreSQL 8.4.9 , това:
create table t(id serial primary key, value text not null);
insert into t(value) values('foo');
select t.name from t;
произвежда странното:
name
---------
(1,foo)
(1 row)
но на 9.1.1 произвежда:
ERROR: column t.name does not exist
LINE 1: select t.name from t;
^
както бихте очаквали.
И така, за да отговоря конкретно на въпроса ви:name
е стандартен тип в PostgreSQL (използван в каталога за имена на таблици и т.н.), а също и някои стандартни функции за преобразуване на неща в name
Тип. Всъщност не е запазено, само обектите, които съществуват, наречени така, плюс някакъв исторически странен синтаксис, правеше нещата объркващи; и това е поправено от разработчиците в последните версии.