Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

544
Vistas
Insertar varias filas con disparador: Postgresql

Tengo un disparador:

 CREATE OR REPLACE FUNCTION process_fillDerivedFromGenby() RETURNS TRIGGER AS $fillDerivedFromgenby$ DECLARE prog varchar(255); curent varchar(255); BEGIN SELECT u.iduseentity ,g.idCreatedEntity into prog,curent FROM entity e JOIN used u ON e.identity=u.iduseentity JOIN activity a ON a.idactivity=u.idusedactivity JOIN generatedby g ON g.idcreatoractivity=a.idactivity WHERE g.idCreatedEntity =NEW.idCreatedEntity; --raise notice 'curent: "%" prog by "%"', curent, prog; INSERT INTO DERIVEDFROM VALUES(prog,curent); return new; END; $fillDerivedFromgenby$ LANGUAGE plpgsql; CREATE TRIGGER fillDerivedFromgenby AFTER INSERT ON GENERATEDBY FOR EACH ROW EXECUTE PROCEDURE process_fillDerivedFromGenby();

Funciona bien, pero si mi selección devuelve 3 líneas, mi disparador solo insertará el último valor de mi selección en lugar de las 3 líneas. He intentado hacer un bucle con un "for" pero no funciona.

Alguna sugerencia ?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Ya di la respuesta en tu otra pregunta . Irónicamente, la pregunta no es un duplicado, pero la respuesta sí.

Esto insertará todas las filas sin pasar por las variables:

 CREATE OR REPLACE FUNCTION process_fillDerivedFrom_used() RETURNS TRIGGER AS $fillDerivedFrom_used$ BEGIN INSERT INTO DERIVEDFROM (prog, current) -- or whatever the column names are SELECT u.iduseentity as prog, g.idCreatedEntity as current FROM entity e JOIN used u ON e.identity = u.iduseentity JOIN activity a ON a.idactivity = u.idusedactivity JOIN generatedby g ON g.idcreatoractivity = a.idactivity; END;
over 4 years ago · Santiago Trujillo Denunciar

0

Pon el "orden por desc" y "límite 1".

 SELECT u.iduseentity ,g.idCreatedEntity into prog,curent FROM entity e JOIN used u ON e.identity=u.iduseentity JOIN activity a ON a.idactivity=u.idusedactivity JOIN generatedby g ON g.idcreatoractivity=a.idactivity WHERE g.idCreatedEntity =NEW.idCreatedEntity

ORDEN POR u.iduseentity DESC LIMIT 1;

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda