none
Eliminar un registro despues de una fecha? RRS feed

  • Pregunta

  • Supongamos que tengo una tabla de Turnos con un id y una fecha en formato "DateTime". Yo tengo varios  registros con una fecha la cual es "x" días después de la fecha actual. Lo que yo quiero es que cuando pasen esos "x" días el registro se elimine automáticamente (Por que el turno ya se venció)

    Hay alguna manera de hacer esto posible? No se si hay que usar un trigger o algo así.

    domingo, 15 de octubre de 2017 18:04

Respuestas

  • Un Job (tarea) contiene la acción que deseas ejecutar cuando una condición se cumpla (el script que te he adjuntado en mi primera propuesta). Sin embargo, para que la tarea se ejecute cada cierto tiempo (en tu caso cada día) debe de haber algún componente que la contenga y que además sea programable, me refiero a SQL Server Agent, pero SQL Server Agent sólo está disponible para las versiones de pago de SQL Server, por lo que te vuelvo a formular la pregunta, ¿qué edición tienes de SQL Server?


    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    domingo, 15 de octubre de 2017 22:16

Todas las respuestas

  • Buenas,

    Podrias crear un job que se encarge de hacerlo. Te dejo algo de documentacion

    Crear un trabajo

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    domingo, 15 de octubre de 2017 18:21
  • Un trigger no, un trigger se desencadena cuando una, o más de una, operación (Insert, Update, Delete) se realizó en una tabla, no es tu caso.

    Lo que necesitas es un programador que tenga la indicación de evaluar cada cierto tiempo un evento en especifico, en el caso particular que presentas, evaluará, cada día, si la diferencia entre el día en curso y la fecha registrada en la tabla de base de datos es "n" días, si el resultado de la evaluación es verdadera se ejecutará la acción que nos comentas: eliminar la fila. La consulta de acción es simple:

    DELETE dbo.TableName WHERE DATEDIFF(DAY, DateColumn, GETDATE()) = 5;

    SQL Server te permite desarrollar la tarea y además programarla, pero esto es posible sólo si cuentas con una edición de pago, no te vale la edición EXPRESS. Si tienes una edición EXPRESS puedes utilizar el programador de tareas de Windows para ejecutar la consulta de eliminación a partir de un script o de un archivo de lotes (*.bat).



    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    domingo, 15 de octubre de 2017 18:28
  • A que te refieres con un "Programador"?

    Un Job?

    domingo, 15 de octubre de 2017 21:47
  • Un Job (tarea) contiene la acción que deseas ejecutar cuando una condición se cumpla (el script que te he adjuntado en mi primera propuesta). Sin embargo, para que la tarea se ejecute cada cierto tiempo (en tu caso cada día) debe de haber algún componente que la contenga y que además sea programable, me refiero a SQL Server Agent, pero SQL Server Agent sólo está disponible para las versiones de pago de SQL Server, por lo que te vuelvo a formular la pregunta, ¿qué edición tienes de SQL Server?


    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    domingo, 15 de octubre de 2017 22:16