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

procedure y delcaracion de variable

Estas en el tema de procedure y delcaracion de variable en el foro de PostgreSQL en Foros del Web. Holas: Tengo dos tablas: usuario y grupo. Un usuario pertenece a un grupo, cuya clave foranea es gru_id. Necesito que cuando se elimine un grupo ...
  #1 (permalink)  
Antiguo 23/03/2010, 20:46
 
Fecha de Ingreso: diciembre-2009
Mensajes: 15
Antigüedad: 14 años, 4 meses
Puntos: 2
procedure y delcaracion de variable

Holas:

Tengo dos tablas: usuario y grupo.
Un usuario pertenece a un grupo, cuya clave foranea es gru_id. Necesito que cuando se elimine un grupo se genere un trigger que dispare una función en la que por cada fila que represente las coincidencias de los usuarios a los que pertenecen a dicho grupo se cambien a otro grupo. Tengo un grupo llamado persona al cual deseo que emigren. (Estoy usando plpgsql)

Mi problema (en el procedimiento) es que no sé como invocar a una variable para pasarle una consulta de este tipo:

SELECT count(*) FROM grupo, usuario where usuario.grupo_id=OLD.id;

esto se debe guardar en una variable, supongo que de tipo int.

Pero en realidad no sé cómo va a ir cambiando una a una las filas afectadas.

Si alguien me puede dar una idea, por favor, escribirla, ante todo muchas gracias.
  #2 (permalink)  
Antiguo 24/03/2010, 07:46
 
Fecha de Ingreso: marzo-2010
Ubicación: La Paz, Bolivia
Mensajes: 8
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: procedure y delcaracion de variable

En SQL yo utilizaria lo siguiente:

UPDATE USUARIO
SET usuario_grupo_id=(id del grupo persona)
WHERE usuario.grupo_id=(id del grupo que eliminaste)

Saludos.
  #3 (permalink)  
Antiguo 24/03/2010, 18:47
 
Fecha de Ingreso: diciembre-2009
Mensajes: 15
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: procedure y delcaracion de variable

Muchas gracias ErnestJim funcionó perfectamente. Para quien necesite algo parecido le dejo el procedimiento:

CREATE OR REPLACE FUNCTION tr_cambia_aotro_grupo()
RETURNS trigger AS
$BODY$BEGIN
UPDATE usuario
SET grupo_id=1
WHERE grupo_id=OLD.id;
RETURN OLD;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION tr_cambia_aotro_grupo() OWNER TO postgres;

Etiquetas: procedure, trigger
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 08:34.