--- On Wed, 5/12/10, uno dos <[email protected]> wrote:

From: uno dos <[email protected]>
Subject: [pgsql-es-ayuda] duda con insert de muchas filas
To: [email protected]
Date: Wednesday, May 12, 2010, 2:21 PM

Hola lista.

Primero, tengo postgresql 8.3.7

Ahora, tengo 2  dudas(dudas de novato)
La primera:
En una aplicación que estoy desarrollando tengo que hacer múltiples INSERT 
dentro de una transacción
 ¿que es más conveniente (En términos de rendimiento)?
   Hacer esto
      INSERT into tabla (campo 1,campo2)values(1,1)
      INSERT into tabla (campo 1,campo2)values(2,2)
      INSERT into tabla (campo 1,campo2)values(3,3)
      ....
      INSERT into tabla (campo 1,campo2)values(n,n)

 ¿ O hacer esto?
      INSERT into tabla (campo 1,campo2)values
 (1,1),
                                                                       (2,2),
                                                                      
 (3,3)
                                                                        ...
                                                                       (n,n)

Me interesa saber, cual instrucción es ejecutada más rápidamente por 
postgresql, o da
 lo mismo?

Mi segunda pregunta
En caso de realizar la instrucción de esta manera:
--------------------------------------------------------------------------------------
 INSERT into tabla (campo 1,campo2) values      (1,1),

                                                                       (2,2),

                                                                       (3,3)

                                                                        ...

                                                                       (n,n)
--------------------------------------------------------------------------------------
Hay algún problema con triggers before y los after insert or update?

o sea yo quiero que pase lo siguiente:
--------------------------------------------------------------------------------------

 INSERT into tabla (campo 1,campo2) values    
               Ejecutar trigger before-->    (1,1), <----Ejecutar trigger after


               Ejecutar trigger before-->    (2,2), <----Ejecutar trigger after
               Ejecutar trigger before-->    (3,3), <----Ejecutar trigger after


                                                          ...
               Ejecutar trigger before-->    (n,n), <----Ejecutar trigger after

--------------------------------------------------------------------------------------
Es decir, lo que quiero, es que se ejecuten los trigger(los AFTER y los BEFORE) 
por cada fila insertada o actualizada en el momento en que sean insertadas y 
que no espere a que se ejecute el comando completamente.

me explico mejor:
Que no pase esto:
---------------------------------------------------------------------------------------
INSERT into tabla (campo 1,campo2) values      (1,1),


                                                                       (2,2),


                                                                       (3,3)


                                                                        ...


                                                                       (n,n)
Ejecutar trigger 1
Ejecutar trigger 2
Ejecutar trigger 3
....
Ejecutar trigger n
---------------------------------------------------------------------------------------

Bueno, espero puedan ayudarme.
Gracias por estar siempre ahí para responder a los más novatos.
Saludos


la diferencia entre la usar la instruccion insert por cada insercion y la de 
usar el insert en lote no es mucha. Si quieres mejor rendimiento usa la 
instruccion COPY 

Si en el trigger usar for each row entonces se ejecutara por cada insert o 
update o delete



      


      

Responder a