Alguien mire a ver...

05/03/2004 - 15:20 por Yovanny Rojas | Informe spam
Ok

La estructura de la tabla es la siguiente
Tabla de Pacas
partida char 10
orden char 10
pesoseco float
balanceseco float
La Clave primaria es partida y paca. Lo extraño es que si agrego una nueva
linea en la tabla funciona bien...

Este es codigo se trigger
CREATE trigger trg_pac_balseco on dbo.Pacas
for insert,delete,update
as
begin
select orden, pesoseco as pes
into #i
from inserted

update pacas Set balanceseco =isnull (balanceseco,0) + pes
from #i Nuevas inner join pacas
on Nuevas.orden=pacas.orden


insert into pacas (orden,balanceseco)
select nuevas.orden, pes
from #i Nuevas left join pacas
on Nuevas.orden=pacas.orden
where pacas.orden is null

select orden, pesoseco as pes
into #d
from deleted

update pacas Set balanceseco=isnull(balanceseco,0) - pes
from #d Viejos inner join pacas
on Viejos.orden=pacas.orden

end


"Maximiliano D. A." <maxi_accotto[arroba]speedy[.]com[.]ar> wrote in message
news:%23hxFRprAEHA.2036@TK2MSFTNGP12.phx.gbl...

Hola!! si nos pasaras la estructura de las tablas y el codigo del Trigger
seria mucho mas facil poder darte una mano.

Suerte


Salu2
Maxi
Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET
[Maxi_accotto[arroba]speedy[punto]com[punto]ar
MSN: Maxi_adrogue@msn.com


"Yovanny Rojas" <yovannyrojas@hotmail.com> escribió en el mensaje
news:ucGFOdrAEHA.2448@TK2MSFTNGP12.phx.gbl...
> Hola amigos
>
> Estoy desarrollando un proyecto con sql server 2000 tengo un trigger q


se

> ejecunta en la misma tabla.
>
> Ejemplo tengo una campo cantidad y uno balance en una misma tabla la
> cantidad actualiza en campo balance...
>
> ahora bien este trigger en ocasiones me lanza error al hacer cualquier
> operacion en la tabla crear,modifcar o borrar.
>
> Si entro un registro nuevo en la tabla desde ese momento hacia delante


no

me
> lanza error
>
> El error que lanza es como si las columnas no existen en las tablas..
>
> Si me pueden decir algo
> Gracias..
> Yovanny Rojas
>
>



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.593 / Virus Database: 376 - Release Date: 21/02/2004


Preguntas similare

Leer las respuestas

#1 Maximiliano D. A.
05/03/2004 - 15:34 | Informe spam
a ver! vayamos por partes

1) empeza a dividir el Trigger en porciones, no intentes en uno solo poner
todo.

Vos por lo que veo queres actualizar una cabecera pero de la misma tabla con
resgistros que no existen al momento de la insersion!! esto no me queda
claro para nada.

Luego veo que inertas en una tabla temporal, para que lo haces si ya tenes
la inserted y la deleted?

Otra cosa, si queres que el trigger cuando vos hagas un insert suponete
sobre esta tabla haga algo en lugar del insert, debes utilizar Triggers En
lugar de (Instead OF)!!

Explicate un poco mejor que buscas con ese trigger porque lo veo bastante
mal :(

Suerte



Salu2
Maxi
Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET
[Maxi_accotto[arroba]speedy[punto]com[punto]ar
MSN:


"Yovanny Rojas" escribió en el mensaje
news:%
Ok

La estructura de la tabla es la siguiente
Tabla de Pacas
partida char 10
orden char 10
pesoseco float
balanceseco float
La Clave primaria es partida y paca. Lo extraño es que si agrego una nueva
linea en la tabla funciona bien...

Este es codigo se trigger
CREATE trigger trg_pac_balseco on dbo.Pacas
for insert,delete,update
as
begin
select orden, pesoseco as pes
into #i
from inserted

update pacas Set balanceseco =isnull (balanceseco,0) + pes
from #i Nuevas inner join pacas
on Nuevas.orden=pacas.orden


insert into pacas (orden,balanceseco)
select nuevas.orden, pes
from #i Nuevas left join pacas
on Nuevas.orden=pacas.orden
where pacas.orden is null

select orden, pesoseco as pes
into #d
from deleted

update pacas Set balanceseco=isnull(balanceseco,0) - pes
from #d Viejos inner join pacas
on Viejos.orden=pacas.orden

end


"Maximiliano D. A." <maxi_accotto[arroba]speedy[.]com[.]ar> wrote in


message
news:%
> Hola!! si nos pasaras la estructura de las tablas y el codigo del


Trigger
> seria mucho mas facil poder darte una mano.
>
> Suerte
>
>
> Salu2
> Maxi
> Buenos Aires Argentina
> Desarrollador Microsoft 3 Estrellas .NET
> [Maxi_accotto[arroba]speedy[punto]com[punto]ar
> MSN:
>
>
> "Yovanny Rojas" escribió en el mensaje
> news:
> > Hola amigos
> >
> > Estoy desarrollando un proyecto con sql server 2000 tengo un trigger q
se
> > ejecunta en la misma tabla.
> >
> > Ejemplo tengo una campo cantidad y uno balance en una misma tabla la
> > cantidad actualiza en campo balance...
> >
> > ahora bien este trigger en ocasiones me lanza error al hacer cualquier
> > operacion en la tabla crear,modifcar o borrar.
> >
> > Si entro un registro nuevo en la tabla desde ese momento hacia delante
no
> me
> > lanza error
> >
> > El error que lanza es como si las columnas no existen en las tablas..
> >
> > Si me pueden decir algo
> > Gracias..
> > Yovanny Rojas
> >
> >
>
>
>
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.593 / Virus Database: 376 - Release Date: 21/02/2004
>
>







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.593 / Virus Database: 376 - Release Date: 21/02/2004
Respuesta Responder a este mensaje
#2 Yovanny Rojas
05/03/2004 - 16:02 | Informe spam
Aquie lanza el error dice q no estan las columnas pes y orden pero cuando
hago una operacion desde otra tabla q afecta la tabla de pacas

update pacas Set balanceseco =isnull(pac_balanceseco,0) + pes
from #i Nuevas inner join pacas
on Nuevas.orden=pacas.orden

dice :
[microsoft][odbc slq server driver]]sql server]invalid column name "pes"
[microsoft][odbc slq server driver]]sql server]invalid column name "orden"

pero pes esta definido en el select de arriba y orden estan es un campo de
la tabla de pacas


"Maximiliano D. A." <maxi_accotto[arroba]speedy[.]com[.]ar> wrote in message
news:
a ver! vayamos por partes

1) empeza a dividir el Trigger en porciones, no intentes en uno solo poner
todo.

Vos por lo que veo queres actualizar una cabecera pero de la misma tabla


con
resgistros que no existen al momento de la insersion!! esto no me queda
claro para nada.

Luego veo que inertas en una tabla temporal, para que lo haces si ya tenes
la inserted y la deleted?

Otra cosa, si queres que el trigger cuando vos hagas un insert suponete
sobre esta tabla haga algo en lugar del insert, debes utilizar Triggers En
lugar de (Instead OF)!!

Explicate un poco mejor que buscas con ese trigger porque lo veo bastante
mal :(

Suerte



Salu2
Maxi
Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET
[Maxi_accotto[arroba]speedy[punto]com[punto]ar
MSN:


"Yovanny Rojas" escribió en el mensaje
news:%
> Ok
>
> La estructura de la tabla es la siguiente
> Tabla de Pacas
> partida char 10
> orden char 10
> pesoseco float
> balanceseco float
> La Clave primaria es partida y paca. Lo extraño es que si agrego una


nueva
> linea en la tabla funciona bien...
>
> Este es codigo se trigger
> CREATE trigger trg_pac_balseco on dbo.Pacas
> for insert,delete,update
> as
> begin
> select orden, pesoseco as pes
> into #i
> from inserted
>
> update pacas Set balanceseco =isnull (balanceseco,0) + pes
> from #i Nuevas inner join pacas
> on Nuevas.orden=pacas.orden
>
>
> insert into pacas (orden,balanceseco)
> select nuevas.orden, pes
> from #i Nuevas left join pacas
> on Nuevas.orden=pacas.orden
> where pacas.orden is null
>
> select orden, pesoseco as pes
> into #d
> from deleted
>
> update pacas Set balanceseco=isnull(balanceseco,0) - pes
> from #d Viejos inner join pacas
> on Viejos.orden=pacas.orden
>
> end
>
>
> "Maximiliano D. A." <maxi_accotto[arroba]speedy[.]com[.]ar> wrote in
message
> news:%
> > Hola!! si nos pasaras la estructura de las tablas y el codigo del
Trigger
> > seria mucho mas facil poder darte una mano.
> >
> > Suerte
> >
> >
> > Salu2
> > Maxi
> > Buenos Aires Argentina
> > Desarrollador Microsoft 3 Estrellas .NET
> > [Maxi_accotto[arroba]speedy[punto]com[punto]ar
> > MSN:
> >
> >
> > "Yovanny Rojas" escribió en el mensaje
> > news:
> > > Hola amigos
> > >
> > > Estoy desarrollando un proyecto con sql server 2000 tengo un trigger


q
> se
> > > ejecunta en la misma tabla.
> > >
> > > Ejemplo tengo una campo cantidad y uno balance en una misma tabla la
> > > cantidad actualiza en campo balance...
> > >
> > > ahora bien este trigger en ocasiones me lanza error al hacer


cualquier
> > > operacion en la tabla crear,modifcar o borrar.
> > >
> > > Si entro un registro nuevo en la tabla desde ese momento hacia


delante
> no
> > me
> > > lanza error
> > >
> > > El error que lanza es como si las columnas no existen en las


tablas..
> > >
> > > Si me pueden decir algo
> > > Gracias..
> > > Yovanny Rojas
> > >
> > >
> >
> >
> >
> > Outgoing mail is certified Virus Free.
> > Checked by AVG anti-virus system (http://www.grisoft.com).
> > Version: 6.0.593 / Virus Database: 376 - Release Date: 21/02/2004
> >
> >
>
>



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.593 / Virus Database: 376 - Release Date: 21/02/2004


Respuesta Responder a este mensaje
#3 Maximiliano D. A.
05/03/2004 - 16:09 | Informe spam
Pero tienes mal el trigger, estas pensando mal la cosa!! porque no escribis
que buscas del trigger y te ayudamos con la respuesta.

Gracias


Salu2
Maxi
Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET
[Maxi_accotto[arroba]speedy[punto]com[punto]ar
MSN:


"Yovanny Rojas" escribió en el mensaje
news:
Aquie lanza el error dice q no estan las columnas pes y orden pero cuando
hago una operacion desde otra tabla q afecta la tabla de pacas

update pacas Set balanceseco =isnull(pac_balanceseco,0) + pes
from #i Nuevas inner join pacas
on Nuevas.orden=pacas.orden

dice :
[microsoft][odbc slq server driver]]sql server]invalid column name "pes"
[microsoft][odbc slq server driver]]sql server]invalid column name "orden"

pero pes esta definido en el select de arriba y orden estan es un campo de
la tabla de pacas


"Maximiliano D. A." <maxi_accotto[arroba]speedy[.]com[.]ar> wrote in


message
news:
> a ver! vayamos por partes
>
> 1) empeza a dividir el Trigger en porciones, no intentes en uno solo


poner
> todo.
>
> Vos por lo que veo queres actualizar una cabecera pero de la misma tabla
con
> resgistros que no existen al momento de la insersion!! esto no me queda
> claro para nada.
>
> Luego veo que inertas en una tabla temporal, para que lo haces si ya


tenes
> la inserted y la deleted?
>
> Otra cosa, si queres que el trigger cuando vos hagas un insert suponete
> sobre esta tabla haga algo en lugar del insert, debes utilizar Triggers


En
> lugar de (Instead OF)!!
>
> Explicate un poco mejor que buscas con ese trigger porque lo veo


bastante
> mal :(
>
> Suerte
>
>
>
> Salu2
> Maxi
> Buenos Aires Argentina
> Desarrollador Microsoft 3 Estrellas .NET
> [Maxi_accotto[arroba]speedy[punto]com[punto]ar
> MSN:
>
>
> "Yovanny Rojas" escribió en el mensaje
> news:%
> > Ok
> >
> > La estructura de la tabla es la siguiente
> > Tabla de Pacas
> > partida char 10
> > orden char 10
> > pesoseco float
> > balanceseco float
> > La Clave primaria es partida y paca. Lo extraño es que si agrego una
nueva
> > linea en la tabla funciona bien...
> >
> > Este es codigo se trigger
> > CREATE trigger trg_pac_balseco on dbo.Pacas
> > for insert,delete,update
> > as
> > begin
> > select orden, pesoseco as pes
> > into #i
> > from inserted
> >
> > update pacas Set balanceseco =isnull (balanceseco,0) + pes
> > from #i Nuevas inner join pacas
> > on Nuevas.orden=pacas.orden
> >
> >
> > insert into pacas (orden,balanceseco)
> > select nuevas.orden, pes
> > from #i Nuevas left join pacas
> > on Nuevas.orden=pacas.orden
> > where pacas.orden is null
> >
> > select orden, pesoseco as pes
> > into #d
> > from deleted
> >
> > update pacas Set balanceseco=isnull(balanceseco,0) - pes
> > from #d Viejos inner join pacas
> > on Viejos.orden=pacas.orden
> >
> > end
> >
> >
> > "Maximiliano D. A." <maxi_accotto[arroba]speedy[.]com[.]ar> wrote in
> message
> > news:%
> > > Hola!! si nos pasaras la estructura de las tablas y el codigo del
> Trigger
> > > seria mucho mas facil poder darte una mano.
> > >
> > > Suerte
> > >
> > >
> > > Salu2
> > > Maxi
> > > Buenos Aires Argentina
> > > Desarrollador Microsoft 3 Estrellas .NET
> > > [Maxi_accotto[arroba]speedy[punto]com[punto]ar
> > > MSN:
> > >
> > >
> > > "Yovanny Rojas" escribió en el mensaje
> > > news:
> > > > Hola amigos
> > > >
> > > > Estoy desarrollando un proyecto con sql server 2000 tengo un


trigger
q
> > se
> > > > ejecunta en la misma tabla.
> > > >
> > > > Ejemplo tengo una campo cantidad y uno balance en una misma tabla


la
> > > > cantidad actualiza en campo balance...
> > > >
> > > > ahora bien este trigger en ocasiones me lanza error al hacer
cualquier
> > > > operacion en la tabla crear,modifcar o borrar.
> > > >
> > > > Si entro un registro nuevo en la tabla desde ese momento hacia
delante
> > no
> > > me
> > > > lanza error
> > > >
> > > > El error que lanza es como si las columnas no existen en las
tablas..
> > > >
> > > > Si me pueden decir algo
> > > > Gracias..
> > > > Yovanny Rojas
> > > >
> > > >
> > >
> > >
> > >
> > > Outgoing mail is certified Virus Free.
> > > Checked by AVG anti-virus system (http://www.grisoft.com).
> > > Version: 6.0.593 / Virus Database: 376 - Release Date: 21/02/2004
> > >
> > >
> >
> >
>
>
>
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.593 / Virus Database: 376 - Release Date: 21/02/2004
>
>







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.593 / Virus Database: 376 - Release Date: 21/02/2004
Respuesta Responder a este mensaje
#4 Yovanny Rojas
05/03/2004 - 16:21 | Informe spam
Bueno

Lo que quiero es cuando modifique el campo peso_seco aumente o disminuya el
balance_seco de la misma tabla.

El campo balance_seco sera tambien aumentado o disminuido por otras tablas
tambien.

Gracia por tu ayuda amigo
Yovanny Rojas



"Maximiliano D. A." <maxi_accotto[arroba]speedy[.]com[.]ar> wrote in message
news:%
Pero tienes mal el trigger, estas pensando mal la cosa!! porque no


escribis
que buscas del trigger y te ayudamos con la respuesta.

Gracias


Salu2
Maxi
Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET
[Maxi_accotto[arroba]speedy[punto]com[punto]ar
MSN:


"Yovanny Rojas" escribió en el mensaje
news:
> Aquie lanza el error dice q no estan las columnas pes y orden pero


cuando
> hago una operacion desde otra tabla q afecta la tabla de pacas
>
> update pacas Set balanceseco =isnull(pac_balanceseco,0) + pes
> from #i Nuevas inner join pacas
> on Nuevas.orden=pacas.orden
>
> dice :
> [microsoft][odbc slq server driver]]sql server]invalid column name "pes"
> [microsoft][odbc slq server driver]]sql server]invalid column name


"orden"
>
> pero pes esta definido en el select de arriba y orden estan es un campo


de
> la tabla de pacas
>
>
> "Maximiliano D. A." <maxi_accotto[arroba]speedy[.]com[.]ar> wrote in
message
> news:
> > a ver! vayamos por partes
> >
> > 1) empeza a dividir el Trigger en porciones, no intentes en uno solo
poner
> > todo.
> >
> > Vos por lo que veo queres actualizar una cabecera pero de la misma


tabla
> con
> > resgistros que no existen al momento de la insersion!! esto no me


queda
> > claro para nada.
> >
> > Luego veo que inertas en una tabla temporal, para que lo haces si ya
tenes
> > la inserted y la deleted?
> >
> > Otra cosa, si queres que el trigger cuando vos hagas un insert


suponete
> > sobre esta tabla haga algo en lugar del insert, debes utilizar


Triggers
En
> > lugar de (Instead OF)!!
> >
> > Explicate un poco mejor que buscas con ese trigger porque lo veo
bastante
> > mal :(
> >
> > Suerte
> >
> >
> >
> > Salu2
> > Maxi
> > Buenos Aires Argentina
> > Desarrollador Microsoft 3 Estrellas .NET
> > [Maxi_accotto[arroba]speedy[punto]com[punto]ar
> > MSN:
> >
> >
> > "Yovanny Rojas" escribió en el mensaje
> > news:%
> > > Ok
> > >
> > > La estructura de la tabla es la siguiente
> > > Tabla de Pacas
> > > partida char 10
> > > orden char 10
> > > pesoseco float
> > > balanceseco float
> > > La Clave primaria es partida y paca. Lo extraño es que si agrego una
> nueva
> > > linea en la tabla funciona bien...
> > >
> > > Este es codigo se trigger
> > > CREATE trigger trg_pac_balseco on dbo.Pacas
> > > for insert,delete,update
> > > as
> > > begin
> > > select orden, pesoseco as pes
> > > into #i
> > > from inserted
> > >
> > > update pacas Set balanceseco =isnull (balanceseco,0) + pes
> > > from #i Nuevas inner join pacas
> > > on Nuevas.orden=pacas.orden
> > >
> > >
> > > insert into pacas (orden,balanceseco)
> > > select nuevas.orden, pes
> > > from #i Nuevas left join pacas
> > > on Nuevas.orden=pacas.orden
> > > where pacas.orden is null
> > >
> > > select orden, pesoseco as pes
> > > into #d
> > > from deleted
> > >
> > > update pacas Set balanceseco=isnull(balanceseco,0) - pes
> > > from #d Viejos inner join pacas
> > > on Viejos.orden=pacas.orden
> > >
> > > end
> > >
> > >
> > > "Maximiliano D. A." <maxi_accotto[arroba]speedy[.]com[.]ar> wrote in
> > message
> > > news:%
> > > > Hola!! si nos pasaras la estructura de las tablas y el codigo del
> > Trigger
> > > > seria mucho mas facil poder darte una mano.
> > > >
> > > > Suerte
> > > >
> > > >
> > > > Salu2
> > > > Maxi
> > > > Buenos Aires Argentina
> > > > Desarrollador Microsoft 3 Estrellas .NET
> > > > [Maxi_accotto[arroba]speedy[punto]com[punto]ar
> > > > MSN:
> > > >
> > > >
> > > > "Yovanny Rojas" escribió en el mensaje
> > > > news:
> > > > > Hola amigos
> > > > >
> > > > > Estoy desarrollando un proyecto con sql server 2000 tengo un
trigger
> q
> > > se
> > > > > ejecunta en la misma tabla.
> > > > >
> > > > > Ejemplo tengo una campo cantidad y uno balance en una misma


tabla
la
> > > > > cantidad actualiza en campo balance...
> > > > >
> > > > > ahora bien este trigger en ocasiones me lanza error al hacer
> cualquier
> > > > > operacion en la tabla crear,modifcar o borrar.
> > > > >
> > > > > Si entro un registro nuevo en la tabla desde ese momento hacia
> delante
> > > no
> > > > me
> > > > > lanza error
> > > > >
> > > > > El error que lanza es como si las columnas no existen en las
> tablas..
> > > > >
> > > > > Si me pueden decir algo
> > > > > Gracias..
> > > > > Yovanny Rojas
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > > > Outgoing mail is certified Virus Free.
> > > > Checked by AVG anti-virus system (http://www.grisoft.com).
> > > > Version: 6.0.593 / Virus Database: 376 - Release Date: 21/02/2004
> > > >
> > > >
> > >
> > >
> >
> >
> >
> > Outgoing mail is certified Virus Free.
> > Checked by AVG anti-virus system (http://www.grisoft.com).
> > Version: 6.0.593 / Virus Database: 376 - Release Date: 21/02/2004
> >
> >
>
>



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.593 / Virus Database: 376 - Release Date: 21/02/2004


Respuesta Responder a este mensaje
#5 Javier Loria
05/03/2004 - 17:25 | Informe spam
Hola Yovanny:
Despacio porque no estamos entendiendo:
a) Ayudaria mucho si nos pasas el DDL. Por ejemplo no encontre Paca
como columna de la tabla y dices que el Llave Primaria, asi que asumo que es
una equivocacion y te refieres a Orden.
b) Asumo que una Orden tiene multiples partidas (relacion padre-hijo) y
no alrevez.
c) Entiendo que pesoseco es un movimiento y que balanceseco es un saldo,
y el movimiento debe modificar el saldo, de manera que si agrego una partida
los saldos de esta partida deben aumentar, tambien deben aumentar todas las
partidas mayores a la actual. (Si son todas las partidas y no solo las
mayores entonces todos los balanceseco de una orden son iguales y pertencen
a otra tabla..
d) Entiendo que quieres hacerlo todo en un trigger, lo cual es posible
pero un poco mas complejo.
e) Asumo que NO pueden cambiarse la llaves primarias de la tabla.
Si todo esto es cierto, la siguiente sintaxis daria el movimiento de la
insercion, borrado o actualizacion:
==SELECT COALESCE(Inserted.Partida, Deleted.Partida) AS Partida
, COALESCE(Inserted.Orden,Deleted.Partida) AS Orden
, COALESCE(Inserted.pesoseco, 0)
- COALESCE(Deleted.pesoseco, 0) AS Movimiento
FROM Inserted
FULL OUTER JOIN Deleted
ON Inserted.partida=Deleted.Partida
AND Inserted.orden =Deleted.Orden
==Como es posible que en una sola actualizacion se modifiquen varias partidas
de la misma orden deben acumularse los cambios de las diferentes partidas
que existen este es un poco mas complejo:
==SELECT Acum.Partida
, Acum.Orden
, SUM(Det.Movimiento)
FROM
(SELECT
COALESCE(Inserted.Partida, Deleted.Partida) AS Partida
, COALESCE(Inserted.Orden,Deleted.Orden) AS Orden
, COALESCE(Inserted.pesoseco, 0)
- COALESCE(Deleted.pesoseco, 0) AS Movimiento
FROM Inserted
FULL OUTER JOIN Deleted
ON Inserted.partida=Deleted.Partida
AND Inserted.orden =Deleted.Orden
) AS Acum
INNER JOIN
(
SELECT COALESCE(Inserted.Partida, Deleted.Partida) AS Partida
, COALESCE(Inserted.Orden,Deleted.Orden) AS Orden
, COALESCE(Inserted.pesoseco, 0)
- COALESCE(Deleted.pesoseco, 0) AS Movimiento
FROM Inserted
FULL OUTER JOIN Deleted
ON Inserted.partida=Deleted.Partida
AND Inserted.orden =Deleted.Orden
) AS Det
ON
Acum.Orden=Dep.Orden
AND Acum.Partida>=Det.Partida
GROUP BY Acum.Partida, Acum.Orden
== Basado en esta consulta se puede hacer la actualizacion haciendo un join
contra esta tabla.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Yovanny Rojas escribio:
Ok

La estructura de la tabla es la siguiente
Tabla de Pacas
partida char 10
orden char 10
pesoseco float
balanceseco float
La Clave primaria es partida y paca. Lo extraño es que si agrego una
nueva linea en la tabla funciona bien...

Este es codigo se trigger
CREATE trigger trg_pac_balseco on dbo.Pacas
for insert,delete,update
as
begin
select orden, pesoseco as pes
into #i
from inserted

update pacas Set balanceseco =isnull (balanceseco,0) + pes
from #i Nuevas inner join pacas
on Nuevas.orden=pacas.orden


insert into pacas (orden,balanceseco)
select nuevas.orden, pes
from #i Nuevas left join pacas
on Nuevas.orden=pacas.orden
where pacas.orden is null

select orden, pesoseco as pes
into #d
from deleted

update pacas Set balanceseco=isnull(balanceseco,0) - pes
from #d Viejos inner join pacas
on Viejos.orden=pacas.orden

end


"Maximiliano D. A." <maxi_accotto[arroba]speedy[.]com[.]ar> wrote in
message news:%
Hola!! si nos pasaras la estructura de las tablas y el codigo del
Trigger seria mucho mas facil poder darte una mano.

Suerte


Salu2
Maxi
Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET
[Maxi_accotto[arroba]speedy[punto]com[punto]ar
MSN:


"Yovanny Rojas" escribió en el mensaje
news:
Hola amigos

Estoy desarrollando un proyecto con sql server 2000 tengo un
trigger q se ejecunta en la misma tabla.

Ejemplo tengo una campo cantidad y uno balance en una misma tabla la
cantidad actualiza en campo balance...

ahora bien este trigger en ocasiones me lanza error al hacer
cualquier operacion en la tabla crear,modifcar o borrar.

Si entro un registro nuevo en la tabla desde ese momento hacia
delante no me lanza error

El error que lanza es como si las columnas no existen en las
tablas..

Si me pueden decir algo
Gracias..
Yovanny Rojas







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.593 / Virus Database: 376 - Release Date: 21/02/2004
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida