2011-04-21 9 views
1

Dans SQL Server 2008 R2" Je tente d'insérer une formule dans SQL Server qui mettra à jour la valeur actuelle dans le domaine LastUpdatedTimestamp à-dire maintenant getdate() chaque fois que le dossier est mis à jour.SQL Server mise à jour automatique champ datetimestamp

+3

Voulez-vous dire via un déclencheur? –

+4

Il n'y a vraiment pas de question ici. – taylonr

+0

Je viens de trouver que je dois utiliser un déclencheur J'espérais que j'aurais pu utiliser une fonction intégrée. Merci les gars – markpcasey

Répondre

8

vous pouvez avoir une contrainte par défaut sur votre champ DateTime qui provoquera la date/heure actuelle à insérer lorsque vous insérez une nouvelle ligne.

a partir de là, vous devez travailler avec un déclencheur AFTER UPDATE qui mettra à jour votre date/colonne de temps chaque fois que la ligne est mise à jour

Vous ne pouvez pas effectuer cette seconde tâche (mise à jour d'un horodatage lors de la mise à jour de la ligne) en utilisant une "formule" comme vous l'avez dit - cela ne fonctionne pas de cette façon dans SQL Server.

Vous devez fournir un déclencheur quelque chose le long de ces lignes:

CREATE TRIGGER trgYourTableUpdateTimestamp 
    ON dbo.YourTable FOR UPDATE 
AS BEGIN 
    UPDATE 
     dbo.YourTable 
    SET 
     YourTimeStampColumn = GETDATE() 
    FROM 
     Inserted Ins 
    WHERE 
     dbo.YourTable.SomeUniqueId = Ins.SomeUniqueId 
END 
Questions connexes