recorrido de inserted o deleted

21/07/2008 - 17:09 por Guillermo Villanueva | Informe spam
Buenos días, me podrían dar ejemplos de triggers multirow que recorran una
por una las filas de inserted o deleted.
Necesito recorrer una por una ya que estoy generando un script de
actualización para otras bases de datos, algo similar a una replicación
casera.
Hasta ahora iba todo bien, pero me había olvidado de considerar que los
triggers pueden dispararse una sola vez por una sentencia que afecta a mas
de una fila.

Gracias de antemano

Guillermo

Preguntas similare

Leer las respuestas

#1 Maxi
21/07/2008 - 17:24 | Informe spam
Hola, el recorrido de filas una a una en sql se hace usando cursores DECLARE
CURSOR

Ahora bien, esta tecnica es lenta, yo trataria de trabajar las cosas en
conjuntos y evitar los cursores.

Recuerda que estas dentro de una tramsaccion en el trigger y no deberias
hacer que dure mucho para evitar bloqueos innecesarios.

Porque mejor no nos cuentas que quieres resolver, porque por lo que quieres
hacer la replicacion nativa de sql te deberia funcionar 10pts


Salu2

Microsoft MVP SQL Server
Culminis Speaker
www.sqltotalconsulting.com

"Guillermo Villanueva" escribió en el
mensaje news:
Buenos días, me podrían dar ejemplos de triggers multirow que recorran una
por una las filas de inserted o deleted.
Necesito recorrer una por una ya que estoy generando un script de
actualización para otras bases de datos, algo similar a una replicación
casera.
Hasta ahora iba todo bien, pero me había olvidado de considerar que los
triggers pueden dispararse una sola vez por una sentencia que afecta a mas
de una fila.

Gracias de antemano

Guillermo

Respuesta Responder a este mensaje
#2 Guillermo
21/07/2008 - 19:32 | Informe spam
Ufff es largo de contar pero resumiendo: con replicación nativa no
solucionamos porque, casi todo es MSDE, no hay posibilidades de que compren
SQL Server. Merge incorpora columnas adicionales lo cual no es aceptable en
este caso.
Entonces por cada transacción quiero generar los:
INSERT
DELETE
UPDATE
necesarios.
El trigger para los inserts ya los tenía listo, pero solo consideraba los
casos de una tabla inserted de una sola fila, en casos de múltiples filas,
no funciona, y justamente quería evitar el uso de cursores.
No puedo agrupar porque necesito cada sentencia por separado :S

"Maxi" escribió en el mensaje
news:
Hola, el recorrido de filas una a una en sql se hace usando cursores
DECLARE CURSOR

Ahora bien, esta tecnica es lenta, yo trataria de trabajar las cosas en
conjuntos y evitar los cursores.

Recuerda que estas dentro de una tramsaccion en el trigger y no deberias
hacer que dure mucho para evitar bloqueos innecesarios.

Porque mejor no nos cuentas que quieres resolver, porque por lo que
quieres hacer la replicacion nativa de sql te deberia funcionar 10pts


Salu2

Microsoft MVP SQL Server
Culminis Speaker
www.sqltotalconsulting.com

"Guillermo Villanueva" escribió en el
mensaje news:
Buenos días, me podrían dar ejemplos de triggers multirow que recorran
una por una las filas de inserted o deleted.
Necesito recorrer una por una ya que estoy generando un script de
actualización para otras bases de datos, algo similar a una replicación
casera.
Hasta ahora iba todo bien, pero me había olvidado de considerar que los
triggers pueden dispararse una sola vez por una sentencia que afecta a
mas de una fila.

Gracias de antemano

Guillermo





Respuesta Responder a este mensaje
#3 Maxi
21/07/2008 - 19:44 | Informe spam
Hola, evita el uso de cursores, usa algo asi como


insert into tabla (campos)
select campos from inserted


Salu2

Microsoft MVP SQL Server
Culminis Speaker
www.sqltotalconsulting.com

"Guillermo" escribió en el mensaje
news:
Ufff es largo de contar pero resumiendo: con replicación nativa no
solucionamos porque, casi todo es MSDE, no hay posibilidades de que
compren SQL Server. Merge incorpora columnas adicionales lo cual no es
aceptable en este caso.
Entonces por cada transacción quiero generar los:
INSERT
DELETE
UPDATE
necesarios.
El trigger para los inserts ya los tenía listo, pero solo consideraba los
casos de una tabla inserted de una sola fila, en casos de múltiples filas,
no funciona, y justamente quería evitar el uso de cursores.
No puedo agrupar porque necesito cada sentencia por separado :S

"Maxi" escribió en el mensaje
news:
Hola, el recorrido de filas una a una en sql se hace usando cursores
DECLARE CURSOR

Ahora bien, esta tecnica es lenta, yo trataria de trabajar las cosas en
conjuntos y evitar los cursores.

Recuerda que estas dentro de una tramsaccion en el trigger y no deberias
hacer que dure mucho para evitar bloqueos innecesarios.

Porque mejor no nos cuentas que quieres resolver, porque por lo que
quieres hacer la replicacion nativa de sql te deberia funcionar 10pts


Salu2

Microsoft MVP SQL Server
Culminis Speaker
www.sqltotalconsulting.com

"Guillermo Villanueva" escribió en
el mensaje news:
Buenos días, me podrían dar ejemplos de triggers multirow que recorran
una por una las filas de inserted o deleted.
Necesito recorrer una por una ya que estoy generando un script de
actualización para otras bases de datos, algo similar a una replicación
casera.
Hasta ahora iba todo bien, pero me había olvidado de considerar que los
triggers pueden dispararse una sola vez por una sentencia que afecta a
mas de una fila.

Gracias de antemano

Guillermo









Respuesta Responder a este mensaje
#4 Guillermo
21/07/2008 - 19:56 | Informe spam
Algo voy a tener que inventar, el problema es que necesito procesar cada
columna de cada fila para armar los inserts, deletes o updates.
Con una sola fila era fácil :S

"Maxi" escribió en el mensaje
news:
Hola, evita el uso de cursores, usa algo asi como


insert into tabla (campos)
select campos from inserted


Salu2

Microsoft MVP SQL Server
Culminis Speaker
www.sqltotalconsulting.com

"Guillermo" escribió en el mensaje
news:
Ufff es largo de contar pero resumiendo: con replicación nativa no
solucionamos porque, casi todo es MSDE, no hay posibilidades de que
compren SQL Server. Merge incorpora columnas adicionales lo cual no es
aceptable en este caso.
Entonces por cada transacción quiero generar los:
INSERT
DELETE
UPDATE
necesarios.
El trigger para los inserts ya los tenía listo, pero solo consideraba los
casos de una tabla inserted de una sola fila, en casos de múltiples
filas, no funciona, y justamente quería evitar el uso de cursores.
No puedo agrupar porque necesito cada sentencia por separado :S

"Maxi" escribió en el mensaje
news:
Hola, el recorrido de filas una a una en sql se hace usando cursores
DECLARE CURSOR

Ahora bien, esta tecnica es lenta, yo trataria de trabajar las cosas en
conjuntos y evitar los cursores.

Recuerda que estas dentro de una tramsaccion en el trigger y no deberias
hacer que dure mucho para evitar bloqueos innecesarios.

Porque mejor no nos cuentas que quieres resolver, porque por lo que
quieres hacer la replicacion nativa de sql te deberia funcionar 10pts


Salu2

Microsoft MVP SQL Server
Culminis Speaker
www.sqltotalconsulting.com

"Guillermo Villanueva" escribió en
el mensaje news:
Buenos días, me podrían dar ejemplos de triggers multirow que recorran
una por una las filas de inserted o deleted.
Necesito recorrer una por una ya que estoy generando un script de
actualización para otras bases de datos, algo similar a una replicación
casera.
Hasta ahora iba todo bien, pero me había olvidado de considerar que los
triggers pueden dispararse una sola vez por una sentencia que afecta a
mas de una fila.

Gracias de antemano

Guillermo













Respuesta Responder a este mensaje
#5 Maxi
21/07/2008 - 20:06 | Informe spam
Pero porque quiere hacerlo asi? porque no los pasa a una tabla intermedia
para saber que esos registros se deben replicar?
No se como esta usted armando la replica a mano, pero copie por lo menos la
idea de sql


Salu2

Microsoft MVP SQL Server
Culminis Speaker
www.sqltotalconsulting.com

"Guillermo" escribió en el mensaje
news:
Algo voy a tener que inventar, el problema es que necesito procesar cada
columna de cada fila para armar los inserts, deletes o updates.
Con una sola fila era fácil :S

"Maxi" escribió en el mensaje
news:
Hola, evita el uso de cursores, usa algo asi como


insert into tabla (campos)
select campos from inserted


Salu2

Microsoft MVP SQL Server
Culminis Speaker
www.sqltotalconsulting.com

"Guillermo" escribió en el mensaje
news:
Ufff es largo de contar pero resumiendo: con replicación nativa no
solucionamos porque, casi todo es MSDE, no hay posibilidades de que
compren SQL Server. Merge incorpora columnas adicionales lo cual no es
aceptable en este caso.
Entonces por cada transacción quiero generar los:
INSERT
DELETE
UPDATE
necesarios.
El trigger para los inserts ya los tenía listo, pero solo consideraba
los casos de una tabla inserted de una sola fila, en casos de múltiples
filas, no funciona, y justamente quería evitar el uso de cursores.
No puedo agrupar porque necesito cada sentencia por separado :S

"Maxi" escribió en el mensaje
news:
Hola, el recorrido de filas una a una en sql se hace usando cursores
DECLARE CURSOR

Ahora bien, esta tecnica es lenta, yo trataria de trabajar las cosas en
conjuntos y evitar los cursores.

Recuerda que estas dentro de una tramsaccion en el trigger y no
deberias hacer que dure mucho para evitar bloqueos innecesarios.

Porque mejor no nos cuentas que quieres resolver, porque por lo que
quieres hacer la replicacion nativa de sql te deberia funcionar 10pts


Salu2

Microsoft MVP SQL Server
Culminis Speaker
www.sqltotalconsulting.com

"Guillermo Villanueva" escribió en
el mensaje news:
Buenos días, me podrían dar ejemplos de triggers multirow que recorran
una por una las filas de inserted o deleted.
Necesito recorrer una por una ya que estoy generando un script de
actualización para otras bases de datos, algo similar a una
replicación casera.
Hasta ahora iba todo bien, pero me había olvidado de considerar que
los triggers pueden dispararse una sola vez por una sentencia que
afecta a mas de una fila.

Gracias de antemano

Guillermo

















Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida