postgres: Что на самом деле делает запрос 'select * from user'? - PullRequest
11 голосов
/ 26 января 2012

В psql, если один из типов «выбрать * из пользователя», вы получите что-то вроде следующего:

 current_user 
--------------
 postgres

Что такое пользователь в этом контексте?

Ответы [ 3 ]

18 голосов
/ 26 января 2012

В этом контексте user является зарезервированной внутренней функцией Postgres, которая представляет текущего пользователя, вошедшего в базу данных.

Этот запрос также можно записать как:

SELECT user;

Что должно дать то же самое. Обратите внимание, что если вы хотите сослаться или создать таблицу с именем user, вам придется использовать кавычки или полностью определить схему, в которой она находится. Например:

CREATE TABLE "user"
(
  id int2 not null
);

будет работать, но:

CREATE TABLE user
(
  id int2 not null
);

выдаст ошибку.

Вот справочник по другим функциям системной информации:

http://www.postgresql.org/docs/9.0/static/functions-info.html

3 голосов
/ 26 января 2012

См. Документацию Postgresql по системным функциям .

В основном "select * from user" - это один из специфических для Postgresql способов поиска текущего пользователя.Функционально это то же самое, что и использование функции current_user, например: "select current_user()".

Другие специальные функции, которые можно использовать в качестве таблиц в запросах:

current_catalog
current_schema
1 голос
/ 11 августа 2015

Если вы ищете список пользователей, я должен искать в таблице pg_user;SELECT * FROM pg_user;

Ваш запрос получает все данные из результата специальной функции с именем user.Эта функция возвращает имя пользователя current_user.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...