PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Името специална ключова дума ли е в PostgreSQL?

Това е известна объркваща „функция“ с малко история. По-конкретно, можете да се обърнете към кортежи от таблицата като цяло с името на таблицата и след това да добавите .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 Тип. Всъщност не е запазено, само обектите, които съществуват, наречени така, плюс някакъв исторически странен синтаксис, правеше нещата объркващи; и това е поправено от разработчиците в последните версии.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Предоставяне на системно разрешение на postgres windows за копиране (windows 8)

  2. Бележки относно индексите на PostgreSQL B-Tree

  3. Как да включа PostgreSQL VERBOSITY в django db връзка?

  4. Как да се възползвате от новите функции за разделяне в PostgreSQL 11

  5. Масив от съставен тип като вход за съхранена процедура, предаван от C# Npgsql