cs_karn
Messages postés79Date d'inscriptionmardi 2 avril 2002StatutMembreDernière intervention 6 juillet 2009
-
23 juil. 2004 à 10:32
deuxciels
Messages postés2Date d'inscriptionmardi 25 mars 2008StatutMembreDernière intervention23 juillet 2009
-
23 juil. 2009 à 16:33
Bonjour,
voici mon trigger:
CREATE TRIGGER trigger_test2
ON table1
FOR UPDATE
AS
IF UPDATE (nom)
UPDATE table1 SET Table1.Updater ='oui'
Je veux que des qu'il y ai un changement dans le champ nom, je met a jour le champ Updater, et pour ça il faudrait que je puisse récupéré le numéro de la ligne qui vient d'être updater.
Comment faire?
olanfr
Messages postés46Date d'inscriptionmardi 9 décembre 2003StatutMembreDernière intervention25 novembre 2006 23 juil. 2004 à 12:49
Bonjour,
Pour ça t'as une table system qui stocke les enregistrements modifiés ou ajoutés :Inserted .
Dans le même genre t'as la table : Deleted qui contient les enregistrements venant d'être supprimés.
@+
Olan
cs_karn
Messages postés79Date d'inscriptionmardi 2 avril 2002StatutMembreDernière intervention 6 juillet 2009 23 juil. 2004 à 14:31
Merci ca marche, je met l'exemple si ca peut servir à quelq'un un jour:
CREATE TRIGGER trigger_test2 ON table1
FOR UPDATE
AS
if update(nom)
UPDATE table1 SET Table1.Updater ='oui'
where Nom in (select inserted.Nom from inserted,Table1 where inserted.nom=table1.nom)
deuxciels
Messages postés2Date d'inscriptionmardi 25 mars 2008StatutMembreDernière intervention23 juillet 2009 23 juil. 2009 à 15:56
Bonjour,
J'ai crée un trigger "AFTER UPDATE" sur une table dans ma base de donnée SQL 2005.
Le problème c'est qu'en faisant UPDATEALL dans VB pour mettre à jour la base,
tous les champs de ma table renvoient true à la fonction update dans SQL, et pas
uniquement les champs modifiés ?
Est-ce normal selon vous ?
Merci d'avance pour vos réponses.
Voici le code de mon trigger :
USE [HDBASE]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[hdcases_upd_any]
ON [dbo].[HDCASES]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @STRMOD AS NVARCHAR(MAX)
SET @STRMOD =''
IF (UPDATE(OPENDATETIME))
BEGIN
SET @STRMOD = @STRMOD + 'Date updated */'
END
IF (UPDATE(priority))
BEGIN
SET @STRMOD = @STRMOD + 'Priority updated /*'
END
IF (UPDATE([Type]))
BEGIN
SET @STRMOD = @STRMOD + 'Type updated /*'
END
IF (UPDATE(Category))
BEGIN
SET @STRMOD = @STRMOD + 'Category updated /*'
END
IF (UPDATE(Details))
BEGIN
SET @STRMOD = @STRMOD + 'Details updated /*'
END
IF (UPDATE(UnlockFlag))
BEGIN
SET @STRMOD = @STRMOD + 'UnlockFlag updated /*'
END
IF (UPDATE(OpenUser))
BEGIN
SET @STRMOD = @STRMOD + 'OpenUser updated /*'
END
IF (UPDATE(ITSupport))
BEGIN
SET @STRMOD = @STRMOD + 'IT Support updated /*'
END
IF @STRMOD <> ''
BEGIN
INSERT INTO HDEVENTS (EVENT,DURATION,DATESTAMP,CASEID)
SELECT @STRMOD ,0.5,getdate(),HDC.ID FROM HDCASES HDC INNER JOIN INSERTED INS
ON HDC.ID = INS.ID
END
END