web-dev-qa-db-fra.com

Comment créer un déclencheur qui met à jour le champ de date et le champ d'heure lors de la modification de la ligne?

J'ai créé une table testtable à l'intérieur de la base de données testbase qui a la structure suivante:

product_no (int, not null)
product_name (varchar(30), not null)
price (money, null)
expire_date (date, null)
expire_time (time(7), null)

Cependant, comment puis-je écrire un déclencheur de telle sorte qu'il mettra à jour cette ligne particulière qui a été modifiée (ou mise à jour avec de nouvelles informations) et enregistre la date de modification dans le expire_date et l'heure de modification dans le expire_time champ? (ou si c'est possible?)

10
Jack

Ce serait assez facile, mais je recommanderais en fait de changer la logique de la commande qui insère/met à jour les données afin d'ajouter des informations supplémentaires à ce stade.

Cependant, si vous souhaitez procéder à un déclencheur, vous pouvez faire quelque chose comme ceci:

create trigger my_trigger
on my_table
after insert, update
as
begin
declare @dt datetime = getdate();
update a
set expire_date = CONVERT(DATE, @dt, 101),
    expire_time = CONVERT(TIME, @dt)
from my_table as a
join inserted as b 
on a.product_no = b.product_no; 
end
go  

Il utilise la table INSERTED pour trouver le product_no des lignes qui ont été modifiées/créées. Vous pouvez en savoir plus sur les déclencheurs sur le lien ci-dessous:

http://msdn.Microsoft.com/en-us/library/ms189799.aspx

J'espère que ceci vous aide.

8
Mr.Brownstone