Vous avez deux choix pour garder un ModifiedDate
à jour:
définir une contrainte DEFAULT
sur cette colonne pour obtenir la date/heure lorsque vous insérez fraîchement une rangée, et créer un AFTER UPDATE
déclencheur pour mettre à jour le ModifiedDate
après chaque opération de mise à jour sur cette ligne
mis l'ModifiedDate
dans votre application client avant chaque opération de sauvegarde de la base de données
Mise à jour: si vous voulez créer un déclencheur AFTER UPDATE
, utilisez le code comme ceci:
CREATE TRIGGER trg_UpdateModifiedDate
ON dbo.YourTableHere
AFTER UPDATE
AS
UPDATE dbo.YourTableHere
SET ModifiedDate = GETDATE()
WHERE AddressID IN (SELECT AddressID FROM Inserted)
Ici, je suppose que votre table YourTableHere
a une sorte de clé primaire - un colonne comme un ID
qui identifie de façon unique et claire chaque ligne unique. En fonction de cette ligne, vous pouvez mettre à jour le ModifiedDate
de toutes les lignes qui ont été mises à jour par une instruction SQL donnée. Inserted
est une table pseudo qui est disponible à l'intérieur d'un corps de code de déclenchement, qui contient toutes les lignes qui ont été modifiées par l'opération qui a provoqué ce déclencheur au feu (toutes les lignes touchées par votre déclaration UPDATE
sur YourTableHere
)
En savoir plus sur les déclencheurs ici:
Mise à jour # 2: si votre colonne ModifiedDate
est en effet calculé sur le niveau de la table SQL Server, vous ne pouvez pas mise à jour directement. Vous aurez besoin de savoir de quoi il a été calculé, puis vous devez modifier cette colonne (si vous le pouvez).
Pour savoir ce qu'il est calculé à partir, exécutez cette requête sur la base de données SQL Server:
SELECT
c.name, c.is_computed, c.definition
FROM
sys.computed_columns c
WHERE
object_id = OBJECT_ID('dbo.Contacts')
AND c.Name = 'ModifiedDate'
Comment est ModifiedDate "calculé"? –
Le concepteur de base de données l'a affecté comme calculé. – Girish
Il n'est pas calculé à partir de n'importe quoi d'autre .. Je l'ai juste mentionné comme calculé. – Girish