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 :

[TRIGGER] INSERT OU UPDATE(maColonne)


Sujet :

MS SQL Server

  1. #1
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut [TRIGGER] INSERT OU UPDATE(maColonne)
    Bonjour,

    Je voudrais faire un trigger qui se déclenche à l'insertion ou à l'update (exécution du corps du trigger seulement si update d'une colonne )d'une table.

    Est-il possible de faire quelque chose qui ressemblerait à ceci?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TRIGGER T_AIU_MaTable ON MaTable
    	AFTER INSERT, UPDATE 
    AS
    BEGIN
    	IF UPDATE (IDBILLINGSTATUS) OR INSERT
    	BEGIN
    		monTraitement
    	END
    END
    En vous remerciant de votre aide,

    ElSuket

  2. #2
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 75
    Par défaut
    Tu es dans le vrai mais attention AFTER déclenche après la mise à jour.
    Si tu veux faire comme tu l'écris à la mise à jour utilise FOR.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TRIGGER T_AIU_MaTable ON MaTable
    	FOR INSERT, UPDATE 
    AS
    BEGIN
    	IF UPDATE (IDBILLINGSTATUS)
    	BEGIN
    		monTraitement
    	END
    END

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Mon problème est que je dois réaliser la mise à jour dans la table MaTable.
    Dans les deux cas, INSERT sur la table ou UPDATE de IDBILLINGSTATUS, je veux faire d'autre traitements (statistiques), en fonction de la valeur de mon IDBILLINGSTATUS

    Algorithmiquement cela donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    CREATE TRIGGER T_AIU_MaTable ON MaTable
    	AFTER INSERT, UPDATE 
    AS
    BEGIN
    	IF UPDATE (IDBILLINGSTATUS)
    	BEGIN
    		monTraitement
    	END
    	ELSE
    	BEGIN
    		monTraitement
    	END
    END
    Dans les deux cas monTraitement est strictement le même. Est-il mieux de le dédier à une procédure stockée à laquelle que passerais des valeurs que je récupère au préalable dans mon trigger ?

    En vous remerciant de votre aide,

    ElSuket

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 997
    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 997
    Billets dans le blog
    6
    Par défaut
    non, car les trigger sont en logique ensembliste. L'usage de paramètres est donc à proscrire.

    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/ * * * * *

  5. #5
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    OK. Voici l'extrait dela documentation de SQL Server 2005 sur l'instruction CREATE TRIGGER :

    FOR | AFTER
    AFTER Spécifie que le déclencheur est exécuté seulement lorsque toutes les opérations spécifiées dans l'instruction SQL de déclenchement ont été exécutées correctement. Toutes les actions d'intégrité référentielle en cascade et les vérifications des contraintes doivent être effectuées avec succès pour que ce déclencheur s'exécute.

    AFTER est la valeur par défaut lorsque FOR est le seul mot clé spécifié.


    Je ne sais pas vous, mais je ne trouve pas l'explication de l'usage du mot-clé FOR très claire.
    Pouvez-vous m'expliquer quelle est la différence entre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TRIGGER monTrigger ON maTable AFTER monDML
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TRIGGER monTrigger ON maTable FOR monDML
    ?

    En vous remerciant de vos lumières

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

Discussions similaires

  1. [MySQL-5.5] Trigger INSERT et UPDATE en même temps
    Par Toufik83 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 08/01/2015, 14h41
  2. trigger insert et update
    Par nath-0-0 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 22/12/2011, 18h29
  3. Remplacer dans trigger INSERT par UPDATE si clé existe
    Par Christop33 dans le forum Requêtes
    Réponses: 1
    Dernier message: 05/07/2011, 13h56
  4. Crée un trigger (INSERT/DELETE/UPDATE) paramètré
    Par Sergejack dans le forum Contribuez
    Réponses: 0
    Dernier message: 15/09/2009, 12h05
  5. [trigger] insert update et delete
    Par kooljy dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 13/07/2006, 08h56

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