[Pgsql-ayuda] psql no actualiza los elementos de un array?

Alvaro Herrera Munoz alvherre@dcc.uchile.cl
Tue, 3 Feb 2004 17:29:19 -0300


On Tue, Feb 03, 2004 at 04:12:53PM +0100, Carlos Ojea Castro wrote:

> Tengo una duda a la hora de actualizar datos en el campo 'mediciones' de 
> tipo 'int [145]'.
> En teoria todo va bien, pero al comprobar los datos, los valores no 
> aparecen.

No, lamentablemente no puedes hacer eso.  Un array no puede tener
elementos nulos; o bien el array completo es NULL, o bien todos los
elementos son valores definidos.  Tienes que definir valores para
todos los elementos, y _entonces_ puedes actualizar uno cualquiera
de ellos.  Me parece sorprendente que no arroje un error cuando trates
de actualizar un elemento en un array que es NULL, quizas es un bug.

En el ejemplo de abajo, mediciones era inicialmente NULL:
(esto es con 7.4beta5)

alvherre=> update foo set mediciones = '{500}';
UPDATE 1
alvherre=> update foo set mediciones[3]=500;
ERROR:  los subíndices de array no son válidos
alvherre=> update foo set mediciones[2]=500;
UPDATE 1
alvherre=> select * from foo;
 mediciones
------------
 {500,500}
(1 fila)

alvherre=> update foo set mediciones[2]=100;
UPDATE 1
alvherre=> select * from foo;
 mediciones
------------
 {500,100}
(1 fila)

-- 
Alvaro Herrera (<alvherre[@]dcc.uchile.cl>)
"Ciencias políticas es la ciencia de entender por qué
 los políticos actúan como lo hacen"  (netfunny.com)