Question

J'ai une table, tblClient qui stocké dans un champ de type datetime date de naissance d'un client, DOB.

objectif ici est que, lorsqu'un client atteint 65 ans (il faut être calculé à travers la date de naissance), je dois insérer un nouvel enregistrement dans une autre table.

Mais depuis l'âge d'un client ne change pas en raison d'une transaction de base de données (INSERT, UPDATE, DELETE), déclencheur est hors de question.

Quelle serait une bonne idée de montior ces changements?

Était-ce utile?

La solution

créer un emploi d'agent SQL qui exécute qui fera ce calcul journalier ou horaire avec T-SQL et si quelqu'un atteint 65 il fera l'insert

Autres conseils

Gardez comme autonome à SQL Server que possible -. Un travail SQL Server Agent qui exécute périodiquement une procédure stockée doit faire bien

Une tâche planifiée ou d'un plan de maintenance SQL Server qui exécute une procédure stockée aussi souvent que nécessaire, mettre à jour les lignes requises.

Qu'en est-il un travail de nuit en utilisant SSIS avec une procédure stockée qui vérifie et si cela arrive qu'ils sont 65, il entre dans une nouvelle ligne dans le tableau?

vous pouvez créer un Agent SQL Server au sein de la base de données en utilisant SQL Server Management Studio ceci:

http://www.databasedesign-resource.com/sql-server -jobs.html

Mettre en place un travail quotidien pour EXEC BirthdayProcessingProcedure ou tout ce que vous voulez le nommer.

Tant que la base de données est en cours d'exécution et, le travail se déroulera selon le calendrier que vous définissez (à partir de la base de données).

Je vais proposer une autre approche - lancer quelque chose à chaque fois qu'une date de naissance est mis à jour (ou ajouté) qui calcule la période à partir de maintenant jusqu'à ce que la première personne atteint 65. Ensuite (re) planifier une tâche à exécuter à ce moment-là .

En outre, je ne peux pas croire que vous devez insérer cette ligne le second, ils atteignent 65, donc une procédure une fois par jour qui calcule les nouveaux jeunes 65year d'aujourd'hui semblent assez bon?

Que diriez-vous d'un nouveau champ qui est la date de age65. Calculer une fois sur insertion d'enregistrement, vous pouvez interroger à cœur joie dans ce domaine. Vous aurez besoin de faire est un déclencheur (et compte des mises à jour, ils sont rares pour les champs de DOB mais possible quand ils sont une erreur de frappe.) Maintenant que je pense certains, un calculted déposé ne fonctionnera probablement au lieu d'un déclencheur.

Ensuite, exécutez un travail quotidien pour attraper quelqu'un qui a eu 65 ans depuis la dernière fois que le travail a été exécuté avec succès. Assurez-vous de gérer cela de sorte que si le travail échoue un jour, les gens de cette daty sont ramassées la prochaine exécution.

La raison pour laquelle je suggère est que le calcul de l'âge de chaque personne inyour base de données chaque jour est un gaspillage de ressources pour un calcul qui a vraiment besoin que d'être fait une fois. Ok pas une grosse affaire quand vous avez 100 personnes, gros problème quand vous avez un million. Doindthis kindof calc sur un million de disques pour identifier les trois dont vous avez besoin est douloureux. Le faire une fois sur la saisie de données, pas si mal.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top