Este Trigger

19/01/2004 - 22:01 por Yovanny Rojas | Informe spam
Hola amigos:

Este trigger guarda el numero de semana en el maestro desde el detalle, pero
mi problema es que solo quiere que guarde la semana mas vieja en el maestro
no importa las cantidades que se entre solo quiero guardar la mas vieja es
decir la semana primera.aunque esta se entre de ultimo,

gracias a todos

CREATE trigger semana on dbo.Produccion
for insert,delete,update
as
begin
select codigo as cod, semana as sem
into #i
from inserted

update maestro Set semana = sem
from #i Nuevas inner join detalle
on maestro.codigo=nuevas.cod


insert into maestro (codigo,semana)
select nuevas.cod, sem
from #i Nuevas left join maestro
on Nuevas.cod=maestro.codigo
where maestro.codigo is null


select codigo as cod, semana as sem
into #d
from deleted

update maestro Set semana = sem
from #d viejos inner join detalle
on maestro.codigo=viejos.cod

end

Preguntas similare

Leer las respuestas

#1 Miguel Egea
19/01/2004 - 20:08 | Informe spam
quizá si cambias esto
select codigo as cod, semana as sem
into #i
from inserted

por esto
select codigo as cod, max(semana) as sem
into #i
from inserted
group by codigo

lo soluciones. (no sé que lógica deberías seguir en el caso de que algo se
borre...)


=Miguel Egea
http://www.portalsql.com
Microsoft SQL-SERVER MVP.
Brigada Anti-Cursores
Aviso de Seguridad
http://www.microsoft.com/spain/tech...9-USER.asp
==

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

Hola amigos:

Este trigger guarda el numero de semana en el maestro desde el detalle,


pero
mi problema es que solo quiere que guarde la semana mas vieja en el


maestro
no importa las cantidades que se entre solo quiero guardar la mas vieja es
decir la semana primera.aunque esta se entre de ultimo,

gracias a todos

CREATE trigger semana on dbo.Produccion
for insert,delete,update
as
begin
select codigo as cod, semana as sem
into #i
from inserted

update maestro Set semana = sem
from #i Nuevas inner join detalle
on maestro.codigo=nuevas.cod


insert into maestro (codigo,semana)
select nuevas.cod, sem
from #i Nuevas left join maestro
on Nuevas.cod=maestro.codigo
where maestro.codigo is null


select codigo as cod, semana as sem
into #d
from deleted

update maestro Set semana = sem
from #d viejos inner join detalle
on maestro.codigo=viejos.cod

end




Respuesta Responder a este mensaje
#2 Miguel Egea
19/01/2004 - 22:52 | Informe spam
pon esto también

> > update maestro Set semana = sem
> > from #i Nuevas inner join detalle
> > on maestro.codigo=nuevas.cod


where nuevas.sem<maestro.semana
>



=Miguel Egea
http://www.portalsql.com
Microsoft SQL-SERVER MVP.
Brigada Anti-Cursores
Aviso de Seguridad
http://www.microsoft.com/spain/tech...9-USER.asp
==

"Yovanny Rojas" escribió en el mensaje
news:
Ok Gracias...eso lo entiendo pero no es el problema lo que pasa que cuando
actualizo si la semana q se entra es mayor que la que estaba no se debe
actualizar

Gracias...


"Miguel Egea" escribió en el mensaje
news:uGJ2b#
> quizá si cambias esto
> select codigo as cod, semana as sem
> into #i
> from inserted
>
> por esto
> select codigo as cod, max(semana) as sem
> into #i
> from inserted
> group by codigo
>
> lo soluciones. (no sé que lógica deberías seguir en el caso de que algo


se
> borre...)
>
>
> => > Miguel Egea
> http://www.portalsql.com
> Microsoft SQL-SERVER MVP.
> Brigada Anti-Cursores
> Aviso de Seguridad
>



http://www.microsoft.com/spain/tech...9-USER.asp
> ==> >
>
> "Yovanny Rojas" escribió en el mensaje
> news:%
> >
> > Hola amigos:
> >
> > Este trigger guarda el numero de semana en el maestro desde el


detalle,
> pero
> > mi problema es que solo quiere que guarde la semana mas vieja en el
> maestro
> > no importa las cantidades que se entre solo quiero guardar la mas


vieja
es
> > decir la semana primera.aunque esta se entre de ultimo,
> >
> > gracias a todos
> >
> > CREATE trigger semana on dbo.Produccion
> > for insert,delete,update
> > as
> > begin
> > select codigo as cod, semana as sem
> > into #i
> > from inserted
> >
> > update maestro Set semana = sem
> > from #i Nuevas inner join detalle
> > on maestro.codigo=nuevas.cod
> >
> >
> > insert into maestro (codigo,semana)
> > select nuevas.cod, sem
> > from #i Nuevas left join maestro
> > on Nuevas.cod=maestro.codigo
> > where maestro.codigo is null
> >
> >
> > select codigo as cod, semana as sem
> > into #d
> > from deleted
> >
> > update maestro Set semana = sem
> > from #d viejos inner join detalle
> > on maestro.codigo=viejos.cod
> >
> > end
> >
> >
> >
> >
>
>


Respuesta Responder a este mensaje
#3 Yovanny Rojas
19/01/2004 - 23:36 | Informe spam
Ok Gracias...eso lo entiendo pero no es el problema lo que pasa que cuando
actualizo si la semana q se entra es mayor que la que estaba no se debe
actualizar

Gracias...


"Miguel Egea" escribió en el mensaje
news:uGJ2b#
quizá si cambias esto
select codigo as cod, semana as sem
into #i
from inserted

por esto
select codigo as cod, max(semana) as sem
into #i
from inserted
group by codigo

lo soluciones. (no sé que lógica deberías seguir en el caso de que algo se
borre...)


=> Miguel Egea
http://www.portalsql.com
Microsoft SQL-SERVER MVP.
Brigada Anti-Cursores
Aviso de Seguridad



http://www.microsoft.com/spain/tech...9-USER.asp
==>

"Yovanny Rojas" escribió en el mensaje
news:%
>
> Hola amigos:
>
> Este trigger guarda el numero de semana en el maestro desde el detalle,
pero
> mi problema es que solo quiere que guarde la semana mas vieja en el
maestro
> no importa las cantidades que se entre solo quiero guardar la mas vieja


es
> decir la semana primera.aunque esta se entre de ultimo,
>
> gracias a todos
>
> CREATE trigger semana on dbo.Produccion
> for insert,delete,update
> as
> begin
> select codigo as cod, semana as sem
> into #i
> from inserted
>
> update maestro Set semana = sem
> from #i Nuevas inner join detalle
> on maestro.codigo=nuevas.cod
>
>
> insert into maestro (codigo,semana)
> select nuevas.cod, sem
> from #i Nuevas left join maestro
> on Nuevas.cod=maestro.codigo
> where maestro.codigo is null
>
>
> select codigo as cod, semana as sem
> into #d
> from deleted
>
> update maestro Set semana = sem
> from #d viejos inner join detalle
> on maestro.codigo=viejos.cod
>
> end
>
>
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida