2011-06-09 2 views
2

Je souhaite insérer le datetime actuel lorsqu'une nouvelle ligne est insérée ou mise à jour. getdate() donne le datetime chaque fois qu'une ligne est insérée. Mais il ne se met pas à jour au moment de la mise à jour de la ligne. Y a-t-il un moyen de le faire?Mise à jour automatique du datetime sur la table Mise à jour: MS SQL08

Modifier: Je ne souhaite pas utiliser les déclencheurs.

Field Structure

+1

Vous pouvez envisager [ 'DateHeureSys()'] (http://msdn.microsoft.com/en-us/library/bb630353. aspx) au lieu de 'getdate()' - il utilisera plus de précision disponible. –

Répondre

4

Une procédure stockée peut vous aider alors, mais une opération de mise à jour ad hoc conduira à des données incohérentes.

+1

Oui, les déclencheurs sont à peu près la seule façon de garantir ce type de fonctionnalité. À moins que quelqu'un laisse tomber, désactive, ou modifie le déclencheur, bien sûr. –

+0

Je ne veux pas utiliser de déclencheurs. Y a-t-il d'autres options? –

6

C'est le déclencheur dont vous avez besoin pour la mise à jour:

CREATE TRIGGER Update ON TABLE1 
FOR UPDATE 
AS 

BEGIN 

SET NOCOUNT ON 

    UPDATE TABLE1 
    SET UpdatedOn = GETDATE() 
     FROM TABLE1 A   
    INNER JOIN Inserted INS ON (A.Id = INS.Id) 

    SET NOCOUNT OFF 

    END 
+0

La requête ne serait pas exécutée pour moi car 'Mise à jour' est un mot-clé. Changé à 'UpdateTrigger' et tout a parfaitement fonctionné. Merci. – RyanfaeScotland