Duda sobre utilizar un trigger

09/02/2006 - 19:18 por Carmelo J. Morales Muñoz | Informe spam
¡hola!

Tengo un procedimiento almacenado que inserta a la vez todas las líneas de
detalle de un albarán. Mi duda es si al crear un trigger para INSERT,
UPDATE, si se ejecutará una vez por cada línea de detalle o si será llamado
al finalizar el comando Insert (que como indico inserta varias filas a la
vez).

Aquí pongo el código que realiza la inserción de las líneas dedetalle desde
un XML por si no me he explicado bien.

INSERT INTO detalle_albaran (Id_Albaran, Referencia, Descripcion, Unidades,
Precio, Descuento, TipoIva)

SELECT @identificadorAlbaran,

Referencia,

Descripcion,

Cantidad,

Precio,

Descuento,

Iva

FROM OPENXML (@idoc,'ROOT/linea',1)

with(

Referencia varchar(13),

Descripcion varchar(50),

Cantidad decimal(9,2),

Precio money,

Descuento decimal(9,2),

Iva decimal(9,2)

)



http://www.gestionagricola.com
http://www.carmelosoft.com

Preguntas similare

Leer las respuestas

#1 Benton
09/02/2006 - 19:50 | Informe spam
Tengo un procedimiento almacenado que inserta a la vez todas las líneas de
detalle de un albarán. Mi duda es si al crear un trigger para INSERT,
UPDATE, si se ejecutará una vez por cada línea de detalle o si será
llamado al finalizar el comando Insert (que como indico inserta varias
filas a la vez).



Puedes crear una tabla "prueba" con un solo campo, y en el trigger creado
para tu tabla detalle insertas un valor cualquiera en la tabla prueba. Una
ojeada a esta tabla después de la operación resolverá tu duda.

Saludos,

-Benton
Respuesta Responder a este mensaje
#2 A.Poblacion
09/02/2006 - 22:13 | Informe spam
"Carmelo J. Morales Muñoz" wrote in message
news:%23i4%
Tengo un procedimiento almacenado que inserta a la vez todas las líneas de
detalle de un albarán. Mi duda es si al crear un trigger para INSERT,
UPDATE, si se ejecutará una vez por cada línea de detalle o si será
llamado al finalizar el comando Insert (que como indico inserta varias
filas a la vez).



El trigger se invoca una sola vez por cada sentencia insert, aunque
insertes varios registros. Dentro del trigger puedes consultar la
pseudo-tabla "inserted", que trae una copia de todos los registros que se
insertaron y ocasionaron el disparo del trigger.
Respuesta Responder a este mensaje
#3 Carmelo J. Morales Muñoz
10/02/2006 - 00:17 | Informe spam
hola y gracias!

entonces,,, para recorrer todos los registros insertados, lo mejor será
crear un cursor sobre la tabla INSERTED. ¿es correcto?.

gracias!


http://www.gestionagricola.com
http://www.carmelosoft.com

"A.Poblacion" escribió en
el mensaje news:
"Carmelo J. Morales Muñoz" wrote in message
news:%23i4%
Tengo un procedimiento almacenado que inserta a la vez todas las líneas
de detalle de un albarán. Mi duda es si al crear un trigger para INSERT,
UPDATE, si se ejecutará una vez por cada línea de detalle o si será
llamado al finalizar el comando Insert (que como indico inserta varias
filas a la vez).



El trigger se invoca una sola vez por cada sentencia insert, aunque
insertes varios registros. Dentro del trigger puedes consultar la
pseudo-tabla "inserted", que trae una copia de todos los registros que se
insertaron y ocasionaron el disparo del trigger.


Respuesta Responder a este mensaje
#4 Daniel A. Calvin
10/02/2006 - 09:06 | Informe spam
Hola Carmelo

Lo que decis es correcto.
Pero,,,
Siempre el pero, no es una práctica recomendada.

Lo mismo te pasa con los triggers de Update y delete.

Daniel A. Calvin
MCP

"Carmelo J. Morales Muñoz" escribió en el mensaje
news:
hola y gracias!

entonces,,, para recorrer todos los registros insertados, lo mejor será
crear un cursor sobre la tabla INSERTED. ¿es correcto?.

gracias!


http://www.gestionagricola.com
http://www.carmelosoft.com

"A.Poblacion" escribió en
el mensaje news:
"Carmelo J. Morales Muñoz" wrote in message
news:%23i4%
Tengo un procedimiento almacenado que inserta a la vez todas las líneas
de detalle de un albarán. Mi duda es si al crear un trigger para INSERT,
UPDATE, si se ejecutará una vez por cada línea de detalle o si será
llamado al finalizar el comando Insert (que como indico inserta varias
filas a la vez).



El trigger se invoca una sola vez por cada sentencia insert, aunque
insertes varios registros. Dentro del trigger puedes consultar la
pseudo-tabla "inserted", que trae una copia de todos los registros que se
insertaron y ocasionaron el disparo del trigger.






Respuesta Responder a este mensaje
#5 A.Poblacion
10/02/2006 - 11:39 | Informe spam
"Carmelo J. Morales Muñoz" wrote in message
news:
entonces,,, para recorrer todos los registros insertados, lo mejor será
crear un cursor sobre la tabla INSERTED. ¿es correcto?.



Si no hay más remedio, sí, pero si puedes es preferible evitar el cursor
(por ejemplo, haciendo cosas del estilo de "Insert into otratabla (select
loquesea from INSERTED left join loquesea)"
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida