58 votes

Comment faire : Créer un déclencheur pour la mise à jour automatique de la date modifiée avec SQL Server 2008

Il serait bon de savoir comment créer un déclencheur qui mette automatiquement à jour la base de données de l'entreprise. modifiedDate dans ma table SQL Server :

Tableau TimeEntry

Id (PK)
UserId (FK)
Description
Time
GenDate
ModDate

Code de déclenchement :

+   TR_TimeEntry_UpdateModDate()
+   TR_TimeEntry_InsertGenDate()

Un exemple de mise à jour ModDate serait bien.

105voto

marc_s Points 321990

Mon approche :

  • définir un contrainte par défaut sur le ModDate avec une valeur de GETDATE() - ce qui permet de gérer le INSERT cas

  • ont un AFTER UPDATE pour mettre à jour le ModDate colonne

Quelque chose comme :

CREATE TRIGGER trg_UpdateTimeEntry
ON dbo.TimeEntry
AFTER UPDATE
AS
    UPDATE dbo.TimeEntry
    SET ModDate = GETDATE()
    WHERE ID IN (SELECT DISTINCT ID FROM Inserted)

0voto

gbn Points 197263

Si vous définissez un DEFAUT, dans votre UPDATE vous pouvez faire ceci

UPDATE
   MyTable
SET
   ...,
   modDate = DEFAULT
WHERE
   ...

Pour INSERT, vous avez seulement besoin d'un défaut sur GenDate

Dans un déclencheur, vous avez besoin de la ligne

...
UPDATE
   M
SET
   modDate = GETDATE()
FROM
   MyTable M
   JOIN
   INSERTED I ON M.Id = I.Id
...

Le reste du code de déclenchement peut être trouvé sur MSDN

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X