Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

PostgreSQL

Войти
Регистрация
Восстановить пароль
 
Dexel
31 / 11 / 1
Регистрация: 29.09.2013
Сообщений: 246
#1

CREATE VIEW, расположение полей - PostgreSQL

20.11.2016, 11:36. Просмотров 280. Ответов 2
Метки нет (Все метки)

Здравствуйте.

Смотрите на поле ava

SQL
1
2
3
4
5
6
7
8
=> CREATE OR REPLACE VIEW members_view AS SELECT m.id, name, email, ava, r.rating, nq, na FROM members AS m, members_rating AS r WHERE r.id=m.id;
CREATE VIEW
 
=> CREATE OR REPLACE VIEW members_view AS SELECT m.id, name, email, r.rating, nq, na, ava FROM members AS m, members_rating AS r WHERE r.id=m.id;
ERROR:  cannot CHANGE name OF VIEW COLUMN "ava" TO "rating"
 
=> CREATE OR REPLACE VIEW members_view AS SELECT m.id, name, email, r.rating, nq, na, m.ava FROM members AS m, members_rating AS r WHERE r.id=m.id;
ERROR:  cannot CHANGE name OF VIEW COLUMN "ava" TO "rating"
В чём дело?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2016, 11:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос CREATE VIEW, расположение полей (PostgreSQL):

CREATE VIEW, ошибка с псевдотипом - PostgreSQL
Приветствую. Возникла такая проблема, при создании данного представления возвращает ошибку "колонка row имеет псевдотип record" ...

что такое CREATE VIEW? - Базы данных
Только не надо мне рассказывать что это 'создание просмотра'. :) Меня интересует для чего они нужны? И если можно, то какой-нить более...

CREATE TYPE - PostgreSQL
подскажите пожалуйста, как создать пользовательский тип... знаю, что создается с помощью CREATE TYPE, но все параметры не знаю... ...

Create cross-ref tables - PostgreSQL
Подскажите пожалуйста, как создать две таблицы, каждая из которых ссылается на другую? CREATE TABLE IF NOT EXISTS department ( ...

Результат выполнения CREATE TABLE - PostgreSQL
Добрый день. Возникла необходимость динамически создавать таблицы в БД. Пишу на ASP.NET, используя NpgsqlConnection. Вопрос...

Не могу найти ошибку (CREATE TABLE) - Базы данных
CREATE TABLE Specialist ( ID_specialista VARCHAR(255) PRIMARY KEY, Familia VARCHAR(255), Imya VARCHAR(255), ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
grgdvo
558 / 494 / 140
Регистрация: 02.09.2012
Сообщений: 1,445
20.11.2016, 23:52 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Dexel Посмотреть сообщение
В чём дело?
Да, вот такая засада. Когда используете CREATE OR REPLACE, порядок, имена и типы данных полей должны совпадать.
В документации на этот счет есть целый абзац.
CREATE OR REPLACE VIEW is similar, but if a view of the same name already exists, it is replaced. The new query must generate the same columns that were generated by the existing view query (that is, the same column names in the same order and with the same data types), but it may add additional columns to the end of the list. The calculations giving rise to the output columns may be completely different.
Почему так, спросите вы??
Я глубоко не копал. Но есть предположение, что поскольку представления в PG реализованы через систему правил (там создается доп. таблица с именем представления и приписыванием правила ON SELECT), то проще заставить пользователя сделать DROP VIEW потом CREATE VIEW, чем вносить изменения в "правила".
1
Dexel
31 / 11 / 1
Регистрация: 29.09.2013
Сообщений: 246
21.11.2016, 13:51  [ТС] #3
Аааа, REPLACE, конечно Сразу не дошло.
Спасибо!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2016, 13:51
Привет! Вот еще темы с ответами:

CREATE VIEW - SQL Server
можете подсказать, что создаёт команда CREATE VIEW, и как это использовать?

ошибка CREATE VIEW - Firebird/InterBase
Здравствуйте. У меня возникла ошибка при создании VIEW: create view stadium1 as SELECT S.stadium_name, count(stadium) FROM...

команда CREATE VIEW - PHP
всем приветствую хочу создатъ представление с помошю команди CREATE VIEW пишу так: $a = mysql_query("CREATE VIEW newtable AS...

create view хитрость - Oracle
Есть таблица с данными, несколько записей. Как создать такое представление, чтобы select count(*) as "Количество записей" from view_name ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru