2016-09-22 1 views
0

Bonjour à tous!Erreur lors de la création de la vue avec la distribution numérique comme décimal sur postgresql

Je travaille actuellement avec postgresql. Eh bien, j'ai besoin de créer des vues où les colonnes numériques restent arrondies 15.3 mais je rencontre un problème que je ne pouvais pas comprendre.

Le travail de sélection:

select cast(15.2547 as decimal(15,3)) as quantidade_medida_estatistica 

La vue ne fonctionne pas:

create or replace view teste as select cast(15.2547 as decimal(15,3)) as quantidade_medida_estatistica 

Erreur:

ERROR: can not change the data type of column view "quantidade_medida_estatistica" of numeric (15,4) to numeric (15,3)

Merci!

Répondre

1

Ceci est un connu « bug » dans Postgres, que vous pouvez lire sur here.

CREATE OR REPLACE VIEW n'est pas exactement la même chose que de laisser tomber la vue et de la recréer. Dans ce cas, les colonnes existantes dans la vue doivent être les mêmes, comme décrit dans le documentation:

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.

Vous pouvez faire ce que vous voulez en laissant tomber et re-création de la vue.

1

Vous ne l'avez pas explicitement déclaré, mais je suppose que la vue existe déjà - au moins le message d'erreur l'indique.

Malheureusement, vous ne pouvez pas modifier les types de données des colonnes d'une vue existante lorsque vous utilisez create or replace.

Vous devez déposer et créer la vue:

drop view teste; 
create view teste 
as 
select cast(15.2547 as decimal(15,3)) as quantidade_medida_estatistica;