Triiger et update?

cs_karn Messages postés 79 Date d'inscription mardi 2 avril 2002 Statut Membre Dernière intervention 6 juillet 2009 - 23 juil. 2004 à 10:32
deuxciels Messages postés 2 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 23 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?

4 réponses

olanfr Messages postés 46 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 25 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
0
cs_karn Messages postés 79 Date d'inscription mardi 2 avril 2002 Statut Membre Derniè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)
0
deuxciels Messages postés 2 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 23 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
0
deuxciels Messages postés 2 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 23 juillet 2009
23 juil. 2009 à 16:33
Desolé j'ai posté dans les archives ...
J'ai recré le post au bon endroit maintenant.
0
Rejoignez-nous