Crear tabla temporal en trigger

04/06/2005 - 14:56 por Alonso | Informe spam
Necesito crear en un trigger una tabla temporal que me resuma los registros
de INSERTEd sobre un campo pues la voy a utilizar en distintas instrucciones
consecutivas.

Se puede hacer y como ?

Preguntas similare

Leer las respuestas

#6 Gustavo Larriera [MVP]
05/06/2005 - 03:44 | Informe spam
USE tempdb
GO

CREATE TABLE t (col1 INT)
GO

CREATE TABLE t2 (col1 INT)
GO

CREATE TRIGGER trg_ins_t ON t FOR INSERT
AS
CREATE TABLE #t (col1 INT)
INSERT #t
SELECT * FROM inserted
INSERT t2
SELECT * FROM #t
GO

INSERT t VALUES (1)

SELECT * FROM t2


Gustavo Larriera
Uruguay LatAm
Blog: http://sqljunkies.com/weblog/gux/
MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"Alonso" wrote in message
news:
Necesito crear en un trigger una tabla temporal que me resuma los
registros
de INSERTEd sobre un campo pues la voy a utilizar en distintas
instrucciones
consecutivas.

Se puede hacer y como ?



Respuesta Responder a este mensaje
#7 Maxi
05/06/2005 - 18:54 | Informe spam
Hola, a ver, con variables tipo table es una forma, pero mucho cuidado, si
son muchos registros vas a tener un enorme problema de performance.

De todas maneras con una tabla temporal no seria mas que esto:


use northwind
Go

create trigger m_tr1 on customers for insert as
select * into #tbl from inserted


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Alonso" escribió en el mensaje
news:%
Fijate... te agradezco mucho el consejo pero yo lo que buscaba era que me
dijeran como crear la tabla temporal en el trigger, ya yo haria las
pruebas
de lugar sobre la sobrecarga o no. De hecho ya investigue como hacerlo
con
una variable tipo tabla y hasta ahora las pruebas van bien. Es mas
rapido
que repetir el subselect en cada update. Quiza no sobrecarga mucho porque
la tabla temporal tiene muy pocos campos.
Pero , de todas formas lo probare con vistas indexadas.
gracias


"Maxi" wrote in message
news:
Hola, si son estas 3 condiciones lo ideal es hacerlo como lo estas


haciendo
vos, las tablas temporales generan una carga adicional.
Otra alternativa seria en lugar de hacer triggers usar vistas indexadas


para
cada tipo entonces te OLVIDAS de mantener estos valores. A mi la solucion


de
vistas indexadas me gusta mucho mas que usar trigger, estudialo, pero de
algo que no haria es meter dentro de un trigger una tabla temporal, por
lo
menos trataria de evitar esto lo maximo posible


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Alonso" escribió en el mensaje
news:
> Bueno es que es muy largo el tema para explicarlo aqui. Pero voy a
> resumirlo
> con un ejemplo parecido mas sencillo:
>
> Tengo una tabla PROYECTO con campos como estos: (codigo, balancetipo1,
> balancetipo2, balancetipo3, y otros campos)
>
> (en el caso real son 5 tipos distintos cuyo acumulado debe llevarse por
> separado porque son datos que deben estar disponibles muy rapidamente


para
> control de pagos y no quiero estar recalculandolos cada vez).
>
> Y otra tabla TRANSACCIONPROYECTO (codigo, secuencia, tipo, valor, ...)
>
> Debo mantener en los campos BalanceTipoN de PROYECTO el valor acumulado


de
> la otra tabla. El problema es segun sea el tipo en TRANSACCIONPROYECTO
> debo
> actualizar uno u otro campo de la tabla PROYECTO.
> Ejemplo del trigger de insert para transaccionproyecto seria algo asi:
>
> Update Proyecto Set proyecto.balancetipo1=proyecto.balancetipo1+I.valor
> from proyecto inner join (select codigo, sum(valor) from inserted group


by
> codigo) I on I.codigo=proyecto.codigo and I.tipo=1
>
> Update Proyecto Set proyecto.balancetipo2=proyecto.balancetipo1+I.valor
> from proyecto inner join (select codigo, sum(valor) from inserted group


by
> codigo) I on I.codigo=proyecto.codigo and I.tipo=2
>
> Update Proyecto Set proyecto.balancetipo3=proyecto.balancetipo1+I.valor
> from proyecto inner join (select codigo, sum(valor) from inserted group


by
> codigo) I on I.codigo=proyecto.codigo and I.tipo=3
>
> El problema es que tengo que manejarlo tambien para UPDATE y DELETE lo
> cual
> hace sumamente repetitivo el subselect (select codigo, sum(valor) from
> inserted group by codigo). Lo que quisiera es poder tener ese


subselect
> en
> una tablita temporal pues me imagino que puede ser mas rapido asi. no ?
>
> De ahi es mi duda. ... Ahora bien si hay una mejor manera de hacerlo


pues
> favor decirme...
>
> Muchisimas gracias
>
>
>
>
>
>
>
>
>
>
>
>
> "Maxi" wrote in message
> news:
>> Hola, mmm no creo que sea muy recomendado hacer eso en un trigger,
>> cual
>> es
>> el problema real que debes resolver? porque lo que nos has indicado es
>> una
>> solucion a un X problema, yo te podria decir como hacerlo pero no es


una
>> buena practica hacer esto en los triggers, con lo cual me gustaria


saber
>> realmente que necesitas resolver y podremos empezar a elaborar la
>> solucion
>> que mas se pueda adecuar, me resisto a pensar que necesites si o si un
>> trigger con una tabla temportal :s
>>
>>
>> Maxi - Buenos Aires - Argentina
>> Desarrollador 3 Estrellas
>>
>> Msn_messager:
>> mail: Maxi.da[arroba]gmail.com
>>
>> "Alonso" escribió en el mensaje
>> news:
>> > Necesito crear en un trigger una tabla temporal que me resuma los
>> > registros
>> > de INSERTEd sobre un campo pues la voy a utilizar en distintas
>> > instrucciones
>> > consecutivas.
>> >
>> > Se puede hacer y como ?
>> >
>> >
>> >
>>
>>
>
>






Respuesta Responder a este mensaje
#8 Jose
05/06/2005 - 20:09 | Informe spam
Yo pienso que si es para un trigger, es de esperarse que la tabla inserted
tenga pocos registros. Si no lo es pues es mejor que no use un trigger y
mejor una vista indexada. Porque los triggers (aunque tengan mucho codigo)
para mi solo son buenos cuando se insertan o modifican pequenos conjuntos de
registros (o de un solo registro).


"Maxi" wrote in message
news:
Hola, a ver, con variables tipo table es una forma, pero mucho cuidado, si
son muchos registros vas a tener un enorme problema de performance.

De todas maneras con una tabla temporal no seria mas que esto:


use northwind
Go

create trigger m_tr1 on customers for insert as
select * into #tbl from inserted


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Alonso" escribió en el mensaje
news:%
> Fijate... te agradezco mucho el consejo pero yo lo que buscaba era que


me
> dijeran como crear la tabla temporal en el trigger, ya yo haria las
> pruebas
> de lugar sobre la sobrecarga o no. De hecho ya investigue como hacerlo
> con
> una variable tipo tabla y hasta ahora las pruebas van bien. Es mas
> rapido
> que repetir el subselect en cada update. Quiza no sobrecarga mucho


porque
> la tabla temporal tiene muy pocos campos.
> Pero , de todas formas lo probare con vistas indexadas.
> gracias
>
>
> "Maxi" wrote in message
> news:
>> Hola, si son estas 3 condiciones lo ideal es hacerlo como lo estas
> haciendo
>> vos, las tablas temporales generan una carga adicional.
>> Otra alternativa seria en lugar de hacer triggers usar vistas indexadas
> para
>> cada tipo entonces te OLVIDAS de mantener estos valores. A mi la


solucion
> de
>> vistas indexadas me gusta mucho mas que usar trigger, estudialo, pero


de
>> algo que no haria es meter dentro de un trigger una tabla temporal, por
>> lo
>> menos trataria de evitar esto lo maximo posible
>>
>>
>> Maxi - Buenos Aires - Argentina
>> Desarrollador 3 Estrellas
>>
>> Msn_messager:
>> mail: Maxi.da[arroba]gmail.com
>>
>> "Alonso" escribió en el mensaje
>> news:
>> > Bueno es que es muy largo el tema para explicarlo aqui. Pero voy a
>> > resumirlo
>> > con un ejemplo parecido mas sencillo:
>> >
>> > Tengo una tabla PROYECTO con campos como estos: (codigo,


balancetipo1,
>> > balancetipo2, balancetipo3, y otros campos)
>> >
>> > (en el caso real son 5 tipos distintos cuyo acumulado debe llevarse


por
>> > separado porque son datos que deben estar disponibles muy rapidamente
> para
>> > control de pagos y no quiero estar recalculandolos cada vez).
>> >
>> > Y otra tabla TRANSACCIONPROYECTO (codigo, secuencia, tipo, valor,


...)
>> >
>> > Debo mantener en los campos BalanceTipoN de PROYECTO el valor


acumulado
> de
>> > la otra tabla. El problema es segun sea el tipo en


TRANSACCIONPROYECTO
>> > debo
>> > actualizar uno u otro campo de la tabla PROYECTO.
>> > Ejemplo del trigger de insert para transaccionproyecto seria algo


asi:
>> >
>> > Update Proyecto Set


proyecto.balancetipo1=proyecto.balancetipo1+I.valor
>> > from proyecto inner join (select codigo, sum(valor) from inserted


group
> by
>> > codigo) I on I.codigo=proyecto.codigo and I.tipo=1
>> >
>> > Update Proyecto Set


proyecto.balancetipo2=proyecto.balancetipo1+I.valor
>> > from proyecto inner join (select codigo, sum(valor) from inserted


group
> by
>> > codigo) I on I.codigo=proyecto.codigo and I.tipo=2
>> >
>> > Update Proyecto Set


proyecto.balancetipo3=proyecto.balancetipo1+I.valor
>> > from proyecto inner join (select codigo, sum(valor) from inserted


group
> by
>> > codigo) I on I.codigo=proyecto.codigo and I.tipo=3
>> >
>> > El problema es que tengo que manejarlo tambien para UPDATE y DELETE


lo
>> > cual
>> > hace sumamente repetitivo el subselect (select codigo, sum(valor)


from
>> > inserted group by codigo). Lo que quisiera es poder tener ese
> subselect
>> > en
>> > una tablita temporal pues me imagino que puede ser mas rapido asi. no


?
>> >
>> > De ahi es mi duda. ... Ahora bien si hay una mejor manera de hacerlo
> pues
>> > favor decirme...
>> >
>> > Muchisimas gracias
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> > "Maxi" wrote in message
>> > news:
>> >> Hola, mmm no creo que sea muy recomendado hacer eso en un trigger,
>> >> cual
>> >> es
>> >> el problema real que debes resolver? porque lo que nos has indicado


es
>> >> una
>> >> solucion a un X problema, yo te podria decir como hacerlo pero no es
> una
>> >> buena practica hacer esto en los triggers, con lo cual me gustaria
> saber
>> >> realmente que necesitas resolver y podremos empezar a elaborar la
>> >> solucion
>> >> que mas se pueda adecuar, me resisto a pensar que necesites si o si


un
>> >> trigger con una tabla temportal :s
>> >>
>> >>
>> >> Maxi - Buenos Aires - Argentina
>> >> Desarrollador 3 Estrellas
>> >>
>> >> Msn_messager:
>> >> mail: Maxi.da[arroba]gmail.com
>> >>
>> >> "Alonso" escribió en el mensaje
>> >> news:
>> >> > Necesito crear en un trigger una tabla temporal que me resuma los
>> >> > registros
>> >> > de INSERTEd sobre un campo pues la voy a utilizar en distintas
>> >> > instrucciones
>> >> > consecutivas.
>> >> >
>> >> > Se puede hacer y como ?
>> >> >
>> >> >
>> >> >
>> >>
>> >>
>> >
>> >
>>
>>
>
>


Respuesta Responder a este mensaje
#9 Maxi
05/06/2005 - 20:26 | Informe spam
Hola Jose, en que te basas ? porque un trigger no quiere decir que son pocos
registros, seran todos los registros que se insertaran, imaginate luego un
paquete DTS que deba pasar datos a esta tabla de otro sistema (por ej un
Xml) con unos cuantos registros ;)


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Jose" escribió en el mensaje
news:
Yo pienso que si es para un trigger, es de esperarse que la tabla inserted
tenga pocos registros. Si no lo es pues es mejor que no use un trigger y
mejor una vista indexada. Porque los triggers (aunque tengan mucho
codigo)
para mi solo son buenos cuando se insertan o modifican pequenos conjuntos
de
registros (o de un solo registro).


"Maxi" wrote in message
news:
Hola, a ver, con variables tipo table es una forma, pero mucho cuidado,
si
son muchos registros vas a tener un enorme problema de performance.

De todas maneras con una tabla temporal no seria mas que esto:


use northwind
Go

create trigger m_tr1 on customers for insert as
select * into #tbl from inserted


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Alonso" escribió en el mensaje
news:%
> Fijate... te agradezco mucho el consejo pero yo lo que buscaba era que


me
> dijeran como crear la tabla temporal en el trigger, ya yo haria las
> pruebas
> de lugar sobre la sobrecarga o no. De hecho ya investigue como
> hacerlo
> con
> una variable tipo tabla y hasta ahora las pruebas van bien. Es mas
> rapido
> que repetir el subselect en cada update. Quiza no sobrecarga mucho


porque
> la tabla temporal tiene muy pocos campos.
> Pero , de todas formas lo probare con vistas indexadas.
> gracias
>
>
> "Maxi" wrote in message
> news:
>> Hola, si son estas 3 condiciones lo ideal es hacerlo como lo estas
> haciendo
>> vos, las tablas temporales generan una carga adicional.
>> Otra alternativa seria en lugar de hacer triggers usar vistas
>> indexadas
> para
>> cada tipo entonces te OLVIDAS de mantener estos valores. A mi la


solucion
> de
>> vistas indexadas me gusta mucho mas que usar trigger, estudialo, pero


de
>> algo que no haria es meter dentro de un trigger una tabla temporal,
>> por
>> lo
>> menos trataria de evitar esto lo maximo posible
>>
>>
>> Maxi - Buenos Aires - Argentina
>> Desarrollador 3 Estrellas
>>
>> Msn_messager:
>> mail: Maxi.da[arroba]gmail.com
>>
>> "Alonso" escribió en el mensaje
>> news:
>> > Bueno es que es muy largo el tema para explicarlo aqui. Pero voy a
>> > resumirlo
>> > con un ejemplo parecido mas sencillo:
>> >
>> > Tengo una tabla PROYECTO con campos como estos: (codigo,


balancetipo1,
>> > balancetipo2, balancetipo3, y otros campos)
>> >
>> > (en el caso real son 5 tipos distintos cuyo acumulado debe llevarse


por
>> > separado porque son datos que deben estar disponibles muy
>> > rapidamente
> para
>> > control de pagos y no quiero estar recalculandolos cada vez).
>> >
>> > Y otra tabla TRANSACCIONPROYECTO (codigo, secuencia, tipo, valor,


...)
>> >
>> > Debo mantener en los campos BalanceTipoN de PROYECTO el valor


acumulado
> de
>> > la otra tabla. El problema es segun sea el tipo en


TRANSACCIONPROYECTO
>> > debo
>> > actualizar uno u otro campo de la tabla PROYECTO.
>> > Ejemplo del trigger de insert para transaccionproyecto seria algo


asi:
>> >
>> > Update Proyecto Set


proyecto.balancetipo1=proyecto.balancetipo1+I.valor
>> > from proyecto inner join (select codigo, sum(valor) from inserted


group
> by
>> > codigo) I on I.codigo=proyecto.codigo and I.tipo=1
>> >
>> > Update Proyecto Set


proyecto.balancetipo2=proyecto.balancetipo1+I.valor
>> > from proyecto inner join (select codigo, sum(valor) from inserted


group
> by
>> > codigo) I on I.codigo=proyecto.codigo and I.tipo=2
>> >
>> > Update Proyecto Set


proyecto.balancetipo3=proyecto.balancetipo1+I.valor
>> > from proyecto inner join (select codigo, sum(valor) from inserted


group
> by
>> > codigo) I on I.codigo=proyecto.codigo and I.tipo=3
>> >
>> > El problema es que tengo que manejarlo tambien para UPDATE y DELETE


lo
>> > cual
>> > hace sumamente repetitivo el subselect (select codigo, sum(valor)


from
>> > inserted group by codigo). Lo que quisiera es poder tener ese
> subselect
>> > en
>> > una tablita temporal pues me imagino que puede ser mas rapido asi.
>> > no


?
>> >
>> > De ahi es mi duda. ... Ahora bien si hay una mejor manera de hacerlo
> pues
>> > favor decirme...
>> >
>> > Muchisimas gracias
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> > "Maxi" wrote in message
>> > news:
>> >> Hola, mmm no creo que sea muy recomendado hacer eso en un trigger,
>> >> cual
>> >> es
>> >> el problema real que debes resolver? porque lo que nos has indicado


es
>> >> una
>> >> solucion a un X problema, yo te podria decir como hacerlo pero no
>> >> es
> una
>> >> buena practica hacer esto en los triggers, con lo cual me gustaria
> saber
>> >> realmente que necesitas resolver y podremos empezar a elaborar la
>> >> solucion
>> >> que mas se pueda adecuar, me resisto a pensar que necesites si o si


un
>> >> trigger con una tabla temportal :s
>> >>
>> >>
>> >> Maxi - Buenos Aires - Argentina
>> >> Desarrollador 3 Estrellas
>> >>
>> >> Msn_messager:
>> >> mail: Maxi.da[arroba]gmail.com
>> >>
>> >> "Alonso" escribió en el mensaje
>> >> news:
>> >> > Necesito crear en un trigger una tabla temporal que me resuma los
>> >> > registros
>> >> > de INSERTEd sobre un campo pues la voy a utilizar en distintas
>> >> > instrucciones
>> >> > consecutivas.
>> >> >
>> >> > Se puede hacer y como ?
>> >> >
>> >> >
>> >> >
>> >>
>> >>
>> >
>> >
>>
>>
>
>






Respuesta Responder a este mensaje
#10 Jose
05/06/2005 - 20:56 | Informe spam
Cierto, pero yo me refiero a que para pensar en resolver un problema con un
trigger debe analizarse que sea un caso donde no sea frecuente la
actualizacion de grandes conjuntos de registros. En aplicaciones comunes se
dan muchos casos de tablas donde practicamente nunca se actualiza mas de un
registro por vez . Por tanto la complejidad del codigo del trigger no le
afecta mucho.
Empero, si hay que estar haciendo DTS o enviando conjuntos voluminosos por
XML con frecuencia pues yo creo que no debe tenerse el trigger en la tabla,
y manejar esos calculos con vistas u otra forma. Ese es mi punto de vista.



"Maxi" wrote in message
news:%
Hola Jose, en que te basas ? porque un trigger no quiere decir que son


pocos
registros, seran todos los registros que se insertaran, imaginate luego un
paquete DTS que deba pasar datos a esta tabla de otro sistema (por ej un
Xml) con unos cuantos registros ;)


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Jose" escribió en el mensaje
news:
> Yo pienso que si es para un trigger, es de esperarse que la tabla


inserted
> tenga pocos registros. Si no lo es pues es mejor que no use un trigger


y
> mejor una vista indexada. Porque los triggers (aunque tengan mucho
> codigo)
> para mi solo son buenos cuando se insertan o modifican pequenos


conjuntos
> de
> registros (o de un solo registro).
>
>
> "Maxi" wrote in message
> news:
>> Hola, a ver, con variables tipo table es una forma, pero mucho cuidado,
>> si
>> son muchos registros vas a tener un enorme problema de performance.
>>
>> De todas maneras con una tabla temporal no seria mas que esto:
>>
>>
>> use northwind
>> Go
>>
>> create trigger m_tr1 on customers for insert as
>> select * into #tbl from inserted
>>
>>
>> Maxi - Buenos Aires - Argentina
>> Desarrollador 3 Estrellas
>>
>> Msn_messager:
>> mail: Maxi.da[arroba]gmail.com
>>
>> "Alonso" escribió en el mensaje
>> news:%
>> > Fijate... te agradezco mucho el consejo pero yo lo que buscaba era


que
> me
>> > dijeran como crear la tabla temporal en el trigger, ya yo haria las
>> > pruebas
>> > de lugar sobre la sobrecarga o no. De hecho ya investigue como
>> > hacerlo
>> > con
>> > una variable tipo tabla y hasta ahora las pruebas van bien. Es mas
>> > rapido
>> > que repetir el subselect en cada update. Quiza no sobrecarga mucho
> porque
>> > la tabla temporal tiene muy pocos campos.
>> > Pero , de todas formas lo probare con vistas indexadas.
>> > gracias
>> >
>> >
>> > "Maxi" wrote in message
>> > news:
>> >> Hola, si son estas 3 condiciones lo ideal es hacerlo como lo estas
>> > haciendo
>> >> vos, las tablas temporales generan una carga adicional.
>> >> Otra alternativa seria en lugar de hacer triggers usar vistas
>> >> indexadas
>> > para
>> >> cada tipo entonces te OLVIDAS de mantener estos valores. A mi la
> solucion
>> > de
>> >> vistas indexadas me gusta mucho mas que usar trigger, estudialo,


pero
> de
>> >> algo que no haria es meter dentro de un trigger una tabla temporal,
>> >> por
>> >> lo
>> >> menos trataria de evitar esto lo maximo posible
>> >>
>> >>
>> >> Maxi - Buenos Aires - Argentina
>> >> Desarrollador 3 Estrellas
>> >>
>> >> Msn_messager:
>> >> mail: Maxi.da[arroba]gmail.com
>> >>
>> >> "Alonso" escribió en el mensaje
>> >> news:
>> >> > Bueno es que es muy largo el tema para explicarlo aqui. Pero voy a
>> >> > resumirlo
>> >> > con un ejemplo parecido mas sencillo:
>> >> >
>> >> > Tengo una tabla PROYECTO con campos como estos: (codigo,
> balancetipo1,
>> >> > balancetipo2, balancetipo3, y otros campos)
>> >> >
>> >> > (en el caso real son 5 tipos distintos cuyo acumulado debe


llevarse
> por
>> >> > separado porque son datos que deben estar disponibles muy
>> >> > rapidamente
>> > para
>> >> > control de pagos y no quiero estar recalculandolos cada vez).
>> >> >
>> >> > Y otra tabla TRANSACCIONPROYECTO (codigo, secuencia, tipo, valor,
> ...)
>> >> >
>> >> > Debo mantener en los campos BalanceTipoN de PROYECTO el valor
> acumulado
>> > de
>> >> > la otra tabla. El problema es segun sea el tipo en
> TRANSACCIONPROYECTO
>> >> > debo
>> >> > actualizar uno u otro campo de la tabla PROYECTO.
>> >> > Ejemplo del trigger de insert para transaccionproyecto seria algo
> asi:
>> >> >
>> >> > Update Proyecto Set
> proyecto.balancetipo1=proyecto.balancetipo1+I.valor
>> >> > from proyecto inner join (select codigo, sum(valor) from inserted
> group
>> > by
>> >> > codigo) I on I.codigo=proyecto.codigo and I.tipo=1
>> >> >
>> >> > Update Proyecto Set
> proyecto.balancetipo2=proyecto.balancetipo1+I.valor
>> >> > from proyecto inner join (select codigo, sum(valor) from inserted
> group
>> > by
>> >> > codigo) I on I.codigo=proyecto.codigo and I.tipo=2
>> >> >
>> >> > Update Proyecto Set
> proyecto.balancetipo3=proyecto.balancetipo1+I.valor
>> >> > from proyecto inner join (select codigo, sum(valor) from inserted
> group
>> > by
>> >> > codigo) I on I.codigo=proyecto.codigo and I.tipo=3
>> >> >
>> >> > El problema es que tengo que manejarlo tambien para UPDATE y


DELETE
> lo
>> >> > cual
>> >> > hace sumamente repetitivo el subselect (select codigo, sum(valor)
> from
>> >> > inserted group by codigo). Lo que quisiera es poder tener ese
>> > subselect
>> >> > en
>> >> > una tablita temporal pues me imagino que puede ser mas rapido asi.
>> >> > no
> ?
>> >> >
>> >> > De ahi es mi duda. ... Ahora bien si hay una mejor manera de


hacerlo
>> > pues
>> >> > favor decirme...
>> >> >
>> >> > Muchisimas gracias
>> >> >
>> >> >
>> >> >
>> >> >
>> >> >
>> >> >
>> >> >
>> >> >
>> >> >
>> >> >
>> >> >
>> >> >
>> >> > "Maxi" wrote in message
>> >> > news:
>> >> >> Hola, mmm no creo que sea muy recomendado hacer eso en un


trigger,
>> >> >> cual
>> >> >> es
>> >> >> el problema real que debes resolver? porque lo que nos has


indicado
> es
>> >> >> una
>> >> >> solucion a un X problema, yo te podria decir como hacerlo pero no
>> >> >> es
>> > una
>> >> >> buena practica hacer esto en los triggers, con lo cual me


gustaria
>> > saber
>> >> >> realmente que necesitas resolver y podremos empezar a elaborar la
>> >> >> solucion
>> >> >> que mas se pueda adecuar, me resisto a pensar que necesites si o


si
> un
>> >> >> trigger con una tabla temportal :s
>> >> >>
>> >> >>
>> >> >> Maxi - Buenos Aires - Argentina
>> >> >> Desarrollador 3 Estrellas
>> >> >>
>> >> >> Msn_messager:
>> >> >> mail: Maxi.da[arroba]gmail.com
>> >> >>
>> >> >> "Alonso" escribió en el mensaje
>> >> >> news:
>> >> >> > Necesito crear en un trigger una tabla temporal que me resuma


los
>> >> >> > registros
>> >> >> > de INSERTEd sobre un campo pues la voy a utilizar en distintas
>> >> >> > instrucciones
>> >> >> > consecutivas.
>> >> >> >
>> >> >> > Se puede hacer y como ?
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >>
>> >> >>
>> >> >
>> >> >
>> >>
>> >>
>> >
>> >
>>
>>
>
>


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