IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

[TSQL] Trigger after update


Sujet :

MS SQL Server

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 94
    Par défaut [TSQL] Trigger after update
    Bonjour,

    Je souhaite créer un trigger sur une table qui, dès q'un update d'un des champs de cette table se produit, fasse l'update sur une autre table qui a la même structure.

    En gros, si je modifie la valeur de l'un des champs de la table A, alors le même champs de la table B est mis à jour.
    La clé primaire est COL_1 dans les 2 tables.
    J'ai essayé ce script mais cela ne fonctionne pas:

    ALTER TRIGGER [dbo].[TRIG01_UPDATE] ON [dbo].[TABLE_A]
    AFTER UPDATE
    AS

    UPDATE TABLE_B
    SET COL_1 = I.COL_1, COL_2 = I.COL_2, COL_3 = I.COL_3
    FROM inserted I
    INNER JOIN
    deleted D
    ON I.COL_1 = D.COL_1

    -- rollback en cas d'erreur
    IF @@Error <> 0
    ROLLBACK TRANSACTION

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 986
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ALTER TRIGGER [dbo].[TRIG01_UPDATE] ON [dbo].[TABLE_A]
    AFTER UPDATE
    AS
     
    UPDATE TABLE_B
    SET    COL_1 = I.COL_1, COL_2 = I.COL_2, COL_3 = I.COL_3
    FROM   inserted I
           INNER JOIN TABLE_A D
                  ON I.COL_1 = D.COL_1
     
    -- rollback en cas d'erreur
    IF @@Error <> 0
    ROLLBACK TRANSACTION
    Ou encore plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE TABLE_B
    SET    COL_1 = I.COL_1, COL_2 = I.COL_2, COL_3 = I.COL_3
    FROM   inserted I
    WHERE  I.COL_1 = COL_1

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 94
    Par défaut
    J'ai essayé la deuxième solution qui est plus simple mais après avoir changé la valeur d'un des champs j'obtiens le message suivant:

    "The row value(s) updated or deleted either do not make the row unique or they alter multiple rows (2 rows)."

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 94
    Par défaut
    Autant pour moi, j'avais oublié de mettre la PK dans la table source

    Merci bcp!

  5. #5
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 56
    Par défaut
    vous auriez pas une réponse pour http://www.developpez.net/forums/d95...r/#post5344710 ?

    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Trigger After Update avec la table Deleted vide ?
    Par azur668 dans le forum Développement
    Réponses: 4
    Dernier message: 24/06/2009, 23h41
  2. Problème exécution trigger after update
    Par Fabien85 dans le forum Développement
    Réponses: 19
    Dernier message: 15/01/2009, 17h35
  3. Réponses: 5
    Dernier message: 15/06/2007, 16h05
  4. Trigger After Update
    Par hair_peace dans le forum Oracle
    Réponses: 8
    Dernier message: 23/08/2006, 21h10
  5. TRIGGER After Update
    Par Nounoursonne dans le forum Oracle
    Réponses: 8
    Dernier message: 20/07/2005, 13h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo