Insertar fechas entre un intervalo de fechas

09/10/2009 - 08:43 por L.Barzi | Informe spam
Hola, tengo 2 tablas pagos y detalle_pagos, en la tabla pagos se debe
guardar aparte de otros campos los campos: fecha_inicio y fecha final

Ejemplo Tabla pagos

id fecha_inicio fecha_final ...
1 20/07/2009 20/12/2009 ..

Y que mediante un trigger me inserte las fechas entre el intevalo de
fecha_inicio y fecha_final a la tabla detalle_pagos

Ejemplo Tabla detalle_pagos

fecha mes
20/07/2009 Julio
20/08/2009 Agosto
20/09/2009 Septiembre
20/10/2009 Octubre
20/11/2009 Noviembre
20/12/2009 Diciembre

Espero su ayuda..

Preguntas similare

Leer las respuestas

#1 Ruben Garrigos
09/10/2009 - 09:31 | Informe spam
Hola L.Barzi,

Aunque puede hacerse lo que dices, me pregunto si no te sería más lógico
encapsular dicha lógica en un procedimiento almacenado que se encargue de
hacer la inserción en la tabla pagos y en la tabla detalle_pagos. Los triggers
tienen el inconveniente de "ensuciar" bastante el comportamiento natural
de las tablas. Personalmente intento evitarlos siempre que es posible...

Un saludo,

Rubén Garrigós
Solid Quality Mentors

Blog: http://blogs.solidq.com/es/elrincondeldba

Hola, tengo 2 tablas pagos y detalle_pagos, en la tabla pagos se debe
guardar aparte de otros campos los campos: fecha_inicio y fecha final

Ejemplo Tabla pagos

id fecha_inicio fecha_final ...

Y que mediante un trigger me inserte las fechas entre el intevalo de
fecha_inicio y fecha_final a la tabla detalle_pagos

Ejemplo Tabla detalle_pagos

fecha mes
20/07/2009 Julio
20/08/2009 Agosto
20/09/2009 Septiembre
20/10/2009 Octubre
20/11/2009 Noviembre
20/12/2009 Diciembre
Espero su ayuda..

Respuesta Responder a este mensaje
#2 Alejandro Mesa
09/10/2009 - 15:25 | Informe spam
L.Barzi,

Ademas de lo dicho por Ruben, recuerda que los triggers son ejecutados
dentro de la misma transaccion iniciada por la sentencia que provoca que este
se dispare. Mientras mas se tarde el trigger, mas se tardara en finalizar la
transaccion. Claro esta, que en este caso tendra que haber una transaccion
explicita si lo haces en un procedimiento para que toda ocurra como una
unidad.

Para contestar tu pregunata, si usas una tabla auxiliar de numeros, entonces
puedes resolver este problema y muchos otros.

Supongamos que tienes una tabla como esta:

create table dbo.Numero (
Numero int not null constraint pk_Numeros primary key clustered with
(fillfactor0)
);
go

...

entonces usarias algo asi como:

select
I.pado_id,
dateadd([month], N.Numero - 1, I.fechainicio) as fecha,
datename([month], dateadd([month], N.Numero - 1, I.fechainicio)) as mes
from
inserted as I
inner join
dbo.Numeros as N
on N.Numero <= datediff([month], I.fecha_inicio, I.fecha_final) + 1
GO


AMB

"L.Barzi" wrote:

Hola, tengo 2 tablas pagos y detalle_pagos, en la tabla pagos se debe
guardar aparte de otros campos los campos: fecha_inicio y fecha final

Ejemplo Tabla pagos

id fecha_inicio fecha_final ...
1 20/07/2009 20/12/2009 ..

Y que mediante un trigger me inserte las fechas entre el intevalo de
fecha_inicio y fecha_final a la tabla detalle_pagos

Ejemplo Tabla detalle_pagos

fecha mes
20/07/2009 Julio
20/08/2009 Agosto
20/09/2009 Septiembre
20/10/2009 Octubre
20/11/2009 Noviembre
20/12/2009 Diciembre

Espero su ayuda..

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