PostgreSQL - Insertar datos a otra tabla usando triggers

 
Vista:

Insertar datos a otra tabla usando triggers

Publicado por Jaime Vasquez Milla (1 intervención) el 01/08/2019 11:35:38
tengo una consulta y no sé si puede hacer. Tengo una tabla de alumnos donde se registran las notas de los alumnos. Las notas van de 0 al 20, necesitando el 10.5 para aprobar. La tabla tiene las columnas de ID, nombre, nota y estado (Aprobado o Desaprobado). Lo que busco es cuando la columna Estado se actualice a Desaprobado, este registro pase a otra tabla de nombre AlumnosDesaprobados. Lo que hice hasta ahora es crear una función y un trigger que cada vez que se actualiza la tabla alumnos inserta los nuevos registros a AlumnosDesaprobados, pero no se cómo añadir la condición de que solo lo haga cuando se actualice la columna Estado a Desaprobado. Soy novato

create function sp_test() returns Trigger
as
$$
begin
insert into "alumnosdesaprobados" values (new.*);
return new;
end
$$
Language plpgsql;
create trigger TR_update after update on alumnos
for each row
execute procedure SP_Test();
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Francisco
Val: 256
Oro
Ha mantenido su posición en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

Insertar datos a otra tabla usando triggers

Publicado por Francisco (110 intervenciones) el 17/08/2019 17:09:35
Hola

Lo unico que tienes que hacer es especificar la columna que va a cambiar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CREATE FUNCTION  update_estado()
   RETURNS TRIGGER
AS
$$
BEGIN
  IF OLD.estado <> NEW.estado THEN
       INSERT INTO alumnosdesaprobados VALUES (NEW.*);
  END IF;
  RETURN NEW;
end
$$
LANGUAGE plpgsql;
 
CREATE TRIGGER tr_update_estado
   AFTER UDATE OF Estado ON alumnos
   FOR EACH ROW
      EXECUTE FUNCTION update_estado();

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar