Всем доброго времени суток!
На первых порах знакомства с Postgres испытал тотальный шок.
До этого работал на MS SQL server, а еще ранее на Oracle, но такого не встречал.
CREATE OR REPLACE VIEW a_cv_sh_sale AS
SELECT t1.id_sale,
t1.id_product,
t1.id_customer,
t1.id_pay_method,
t1.id_employee,
t1.quantity_sold,
t2.price::double precision * t1.quantity_sold AS sold_cost_total,
t1.date_sale,
date_part('month'::text, t1.date_sale) AS month_sale,
date_part('year'::text, t1.date_sale) AS year_sale,
t2.short_name as product_name,
t3.short_name as manufacturer_name
FROM a_sh_sale t1
JOIN a_sh_product t2 ON t2.id_product = t1.id_product
JOIN a_spr_manufacturer t3 ON t3.id_manufacturer = t2.id_manufacturer;
Запуск данного запроса выдает ошибку!
ОШИБКА: изменить имя колонки "short_name" на "product_name" в представлении нельзя
********** Ошибка **********
ОШИБКА: изменить имя колонки "short_name" на "product_name" в представлении нельзя
SQL-состояние: 42P16
Люди добрые объясните ПОЧЕМУ нельзя изменить название колонки в представлении?
Заранее спасибо.
Неясно, т.к. не видно всей
Неясно, т.к. не видно всей схемы.
Но как некий очевидный вариант: вы уже создали представление, а теперь пытаетесь его изменить с модификацией схемы этого представления - что как бы нельзя. Надо вначале удалить полностью представление, а только потом создать уже новое-старое.
Т.е. вы хотите сказать, что
Т.е. вы хотите сказать, что если представление было однажды создано, то названия столбцов через create or replace менять нельзя? Нужно обязательно сначала DELETE представление и только потом CREATE новое-старое???
Вообще говоря - это логично.
Вообще говоря - это логично. Ведь представление не хранит данные. Представление - это скорее описание запроса на получение данных. Таким образом куда проще и дешевле пересоздать представление с нужными именами и колонками, чем что-либо в нём менять.