Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

como actualizar una vista desde una funcion?

Estas en el tema de como actualizar una vista desde una funcion? en el foro de PostgreSQL en Foros del Web. esta es una funcion migrada del sql server al postgres la cual actualiza los datos que muestran la vista. CREATE OR REPLACE FUNCTION act_org(cper integer, ...
  #1 (permalink)  
Antiguo 23/04/2007, 09:15
 
Fecha de Ingreso: abril-2007
Mensajes: 27
Antigüedad: 17 años
Puntos: 0
como actualizar una vista desde una funcion?

esta es una funcion migrada del sql server al postgres la cual actualiza los datos que muestran la vista.

CREATE OR REPLACE FUNCTION act_org(cper integer, corg integer)
RETURNS void AS
$BODY$declare

begin
UPDATE VWACTDIS
SET COD_ORG=CORG
WHERE COD_PER=CPER;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION act_org(cper integer, corg integer) OWNER TO postgres;


en el sql server funciona perfecto pero en el postgres me da este error
....
ERROR: cannot update a view
Estado SQL:0A000
Sugerencias:You need an unconditional ON UPDATE DO INSTEAD rule.
Contexto:SQL statement "UPDATE VWACTDIS SET COD_ORG= $1 WHERE COD_PER= $2 "
PL/pgSQL function "act_org" line 4 at SQL statement


alguien me puede ayudar???porfaa urgente gracias
  #2 (permalink)  
Antiguo 24/04/2007, 07:05
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 8 meses
Puntos: 7
Re: como actualizar una vista desde una funcion?

Otra vez no entiendo...

una vista, se mantiene actualizada, automágicamente, por eso es una vista...

¿qué quieres hacer?
__________________
Gracias de todas todas
-----
Linux!
  #3 (permalink)  
Antiguo 24/04/2007, 08:32
 
Fecha de Ingreso: abril-2007
Mensajes: 27
Antigüedad: 17 años
Puntos: 0
Re: como actualizar una vista desde una funcion?

Cita:
Iniciado por cacr Ver Mensaje
Otra vez no entiendo...

una vista, se mantiene actualizada, automágicamente, por eso es una vista...

¿qué quieres hacer?

muy de acuedo deberia haber actualizado la tabla y punto...pero no tengo una tabla que relacione los campos que deseo actualizar, por eso utilice una vista donde relaciono los campos ,entonces lo que hago a traves del procedimiento almacenado de sql server es modificar o actualizar el campo cor_org de la vista asi la tabla no cambia ,entonces aclarando no quiero actualizar la vista quiero actualizar los registros del campo cod_org de la vista mediante la funcion
  #4 (permalink)  
Antiguo 24/04/2007, 08:40
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 8 meses
Puntos: 7
Re: como actualizar una vista desde una funcion?

Cita:
Iniciado por mariovargascareaga Ver Mensaje
muy de acuedo deberia haber actualizado la tabla y punto...pero no tengo una tabla que relacione los campos que deseo actualizar, por eso utilice una vista donde relaciono los campos ,entonces lo que hago a traves del procedimiento almacenado de sql server es modificar o actualizar el campo cor_org de la vista asi la tabla no cambia ,entonces aclarando no quiero actualizar la vista quiero actualizar los registros del campo cod_org de la vista mediante la funcion
¿qué?

al menos yo, no entendí nada!!!

La vista, es una "vista" de la(s) tabla(s)... no tiene por qué "tocar" la tabla, de hehco, no la hace, sólo la "observa" y la muestra como la ve, tal cual... cada vez que haces un "cambio" sobre la(s) tabla(s), la vista, "observa" el cambio, y lo muestra...

¿una función para qué? no entiendo... alguien que me explique
__________________
Gracias de todas todas
-----
Linux!
  #5 (permalink)  
Antiguo 24/04/2007, 15:52
 
Fecha de Ingreso: abril-2007
Mensajes: 27
Antigüedad: 17 años
Puntos: 0
Re: como actualizar una vista desde una funcion?

Cita:
Iniciado por cacr Ver Mensaje
¿qué?

al menos yo, no entendí nada!!!

La vista, es una "vista" de la(s) tabla(s)... no tiene por qué "tocar" la tabla, de hehco, no la hace, sólo la "observa" y la muestra como la ve, tal cual... cada vez que haces un "cambio" sobre la(s) tabla(s), la vista, "observa" el cambio, y lo muestra...

¿una función para qué? no entiendo... alguien que me explique
si realmente es confuso lo q dije yo tampoco lo hubiera hecho asi metia update a las tablas y punto pero....estoy migrando algo ya hecho por otros developers tonces meterle mano no mas ,,,,vista es una 'vista ' de las tablas muy de acuerdo que no tendria que actualizar ningun registro de esa vista muy de acuerdo lo que pasa es que por efectos de programacion lo hicieron asi actualzan los campos de una vista con un procedimiento almacenado :(
  #6 (permalink)  
Antiguo 26/04/2007, 08:54
 
Fecha de Ingreso: agosto-2006
Mensajes: 179
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: como actualizar una vista desde una funcion?

Mas bien lo que debes hacer es crear una tabla con la misma estructura de una vista, lo que pasa es que manualmente con triggers deberia actualizar la tabla, a una vista no se le puede hacer INSERT INTO, UPDATE o DELETE, una vista solo es una consulta que se hace cada vez que se llama a la vista, creo que con lo de latabla lo puedes hacer, ovbviamente mas complicado pero es viable.
  #7 (permalink)  
Antiguo 26/04/2007, 13:58
 
Fecha de Ingreso: abril-2007
Mensajes: 27
Antigüedad: 17 años
Puntos: 0
Re: como actualizar una vista desde una funcion?

Cita:
Iniciado por rusinho Ver Mensaje
Mas bien lo que debes hacer es crear una tabla con la misma estructura de una vista, lo que pasa es que manualmente con triggers deberia actualizar la tabla, a una vista no se le puede hacer INSERT INTO, UPDATE o DELETE, una vista solo es una consulta que se hace cada vez que se llama a la vista, creo que con lo de latabla lo puedes hacer, ovbviamente mas complicado pero es viable.
correcto lo q pasa y ya indique es una migracion de sql server y no puedo tocar codigo del frontend........
  #8 (permalink)  
Antiguo 27/04/2007, 09:58
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 8 meses
Puntos: 7
Re: como actualizar una vista desde una funcion?

Ninguna migración se puede hacer transparente, y menos si viene de un producto MS. No por que no se quiera, no es un tema filosófico, sino por los "valores agregados" que entrega MS y que no tienen igual en ningún otro lado...

Migración de MS a otra cosa = necesariamente retocar el producto
__________________
Gracias de todas todas
-----
Linux!
  #9 (permalink)  
Antiguo 02/08/2007, 21:18
 
Fecha de Ingreso: agosto-2007
Mensajes: 1
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: como actualizar una vista desde una funcion?

Hola,

Antes que nada me presento ya que soy nuevo. Claudio Escobar, mucho gusto.

Las vistas en PostgreSQL no se pueden actualizar directamente, como en otras bases de datos (ms sql server,oracle, mysql, incluso access).

Para poder hacerlo necesitas crear una 'rule' (realmente no se la traduccion).
Fijate en la documentacion 'CREATE RULE' o sino googlealo, seguro aparece algo.

Hasta luego.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:43.