Что такое SQL "псевдостолбец"? - PullRequest
5 голосов
/ 12 октября 2008

Я случайно кодировал SELECT $FOO.. и получил ошибку «Неверная псевдостолбец« $ FOO ».

Я не могу найти для них никакой документации. Это то, что я должен знать?

Изменить: это вопрос MS SQL Server.

Ответы [ 7 ]

4 голосов
/ 19 января 2011

Псевдоколонки - это символьные псевдонимы для фактических столбцов, которые имеют специальные свойства, например, $ IDENTITY - это псевдоним для столбца, которому назначена IDENTITY, $ ROWGUID для столбца с назначенным ROWGUIDCOL. Используется для внутренних сценариев сантехники.

1 голос
/ 22 декабря 2011

Псевдостолбец ведет себя как столбец таблицы, но фактически не сохраняется в таблице. Вы можете выбрать псевдоколонки, но не можете вставлять, обновлять или удалять их значения.

1 голос
/ 19 января 2011

Я не знаю, почему большинство ответов относятся к Oracle. Вопрос касается SQL Server!

Помимо ответа RobsonROX, другой пример их использования содержится в предложении output оператора merge. $action указывает, была ли строка вставлена ​​или удалена.

0 голосов
/ 29 июня 2011

псевдо столбцы являются ложными столбцами. любая таблица будет поддерживать псевдостолбцы так же, как и в собственном столбце строго говоря, они являются функциями: 1.SYSDATE; 2.ROWNUM; 3.ROWID; 4.NEXTVAL; 5.CURRVAL; 6.LEVEL;

0 голосов
/ 12 октября 2008

Одним из примеров псевдостолбца является ROWID в Informix. Это 32-разрядное число, которое можно использовать для поиска страницы данных быстрее, чем любым другим способом (с учетом предостережений, таких как таблица не фрагментирована), поскольку в основном это адрес страницы для данных. Вы можете сделать SELECT * FROM SomeTable, и он не будет отображаться; Вы можете сделать SELECT ROWID, * FROM SomeTable, и это будет отображаться в ваших данных. Поскольку он на самом деле не хранится на диске (вы не увидите ROWID на диске с данными, хотя ROWID указывает, где искать данные на диске), это псевдостолбец. Могут быть и другие псевдостолбцы, связанные с таблицами - они, как правило, несколько эзотеричны.

Их также можно назвать скрытыми столбцами , особенно если они (в отличие от псевдостолбцов) действительно хранятся в базе данных, но не выбраны *; Вы должны специально запросить столбец, чтобы увидеть его.

0 голосов
/ 12 октября 2008

Псевдоколонки - это виртуальные столбцы, которые доступны в особых случаях. В базе данных Oracle есть псевдостолбец ROWNUM, который даст вам номер строки. SQL-сервер, насколько я знаю, на самом деле не поддерживает псевдостолбцы, но есть ошибки и хранимые процедуры, которые ссылаются на псевдостолбцы, вероятно, для переноса Oracle.

0 голосов
/ 12 октября 2008

Простой поиск в Google выводит это из ссылки Oracle:

Псевдоколонка ведет себя как таблица столбец, но на самом деле не хранится в стол. Вы можете выбрать из псевдоколонки, но вы не можете вставить, обновить или удалить их значения.

Я думаю, что ошибка, которую вы получили, заключается просто в том, что нет столбца $ FOO, поэтому анализатор запросов проверяет, есть ли psuedocolumn с именем $ FOO как запасной вариант. И поскольку псевдостолбец с именем «$ FOO» отсутствует (и нет другого запасного варианта), вы получаете ошибку «Недопустимый псевдостолбец $ FOO». Это предположение, хотя. Я не специалист по базам данных.

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