> Alejandro D. Burne escribió:
>> Probablemente se haya planteado anteriormente el caso. Algunas veces
>> uno modifica estructuras de una vista remota, para ello (cuando
>> cambian los campos que la componen, por ejemplo) necesita eliminarla y
>> volver a crearla. El problema se presenta si esa vista es utilizada en
>> una función, ya que al borrarla no genera ninguna advertencia y luego
>> al ejecutar la función nos devuelve un error sobre un objeto
>> inexistente (adjunto un ejemplo).
>
> Esto fue corregido hasta cierto punto en 8.3. Tu ejemplo funciona:
>
> alvherre=> CREATE TABLE _test AS SELECT 1::SMALLINT;
> SELECT
> alvherre=> CREATE OR REPLACE VIEW _vtest AS SELECT * FROM _test;
> CREATE VIEW
> alvherre=> CREATE FUNCTION _ftest() RETURNS void AS
> alvherre-> $BODY$ BEGIN PERFORM 1 FROM _vtest; RETURN; END $BODY$ LANGUAGE 'plp
> sql' VOLATILE;
> CREATE FUNCTION
> alvherre=> SELECT * FROM _ftest();
> _ftest
> --------
>
> (1 ligne)
>
> alvherre=> DROP VIEW _vtest;
> DROP VIEW
> alvherre=> CREATE VIEW _vtest AS SELECT *, 2 FROM _test;
> CREATE VIEW
> alvherre=> SELECT * FROM _ftest();
> _ftest
> --------
>
> (1 ligne)
>
Ok, vamos a montar un nuevo equipo en el cual instalaremos 8.3; por
qué hablas de "corregido hasta cierto punto"? existe algún problema
pendiente?
Gracias y saludos, Alejandro
--
TIP 1: para suscribirte y desuscribirte, visita http://archives.postgresql.org/pgsql-es-ayuda
No comments:
Post a Comment