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:%
Mostrar la cita
message
Mostrar la cita
Trigger
Mostrar la cita
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
#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:
Mostrar la cita
con
Mostrar la cita
nueva
Mostrar la cita
q
Mostrar la cita
cualquier
Mostrar la cita
delante
Mostrar la cita
tablas..
Mostrar la cita
#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:
Mostrar la cita
message
Mostrar la cita
poner
Mostrar la cita
tenes
Mostrar la cita
En
Mostrar la cita
bastante
Mostrar la cita
trigger
Mostrar la cita
la
Mostrar la cita
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
#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:%
Mostrar la cita
escribis
Mostrar la cita
cuando
Mostrar la cita
"orden"
Mostrar la cita
de
Mostrar la cita
tabla
Mostrar la cita
queda
Mostrar la cita
suponete
Mostrar la cita
Triggers
Mostrar la cita
tabla
Mostrar la cita
#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:
Mostrar la cita
Ads by Google
Search Busqueda sugerida