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

Développement SQL Server Discussion :

Trigger sur update


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 15
    Par défaut Trigger sur update
    Bonjour à tous,
    Je suis actuellement en BTS et j'étudie le SQL. Mon énoncé me demande de créer un trigger qui lors de la modification d'un champ (members_character_name), je modifie un autre champ (members_character_level). En clair, lorsque dans la table, il y a une modification de "members_character_name", je dois initialiser son "members_character_level" à 1.
    Voici ce que j'ai fais mais j'ai une erreur de syntaxe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TRIGGER members_character_name_1 AFTER UPDATE ON members
    AS
    IF UPDATE (members_character_name)
    BEGIN 
    UPDATE members
    SET members_character_level=1
    END;
    (Je précise que je suis débutant)

    Merci et bonne journée !

  2. #2

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 15
    Par défaut
    Merci je vais essayer de me débrouiller avec ça. Est-ce que tu peux me confirmer la syntaxe pour "Si un camp est modifié" c'est bien ça ?

  4. #4
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 218
    Billets dans le blog
    16
    Par défaut
    Il faudrait faire suivre le « AS » de début d’un BEGIN (et ajouter le END correspondant en fin de bloc).

    IF UPDATE (nom de colonne) est correct.

  5. #5
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 218
    Billets dans le blog
    16
    Par défaut
    Attention quand même. Si on s’en tient à votre UPDATE de la colonne members_character_level, ce sont toutes les lignes de la table members qui seront systématiquement mises à jour pour cette colonne, même celles qui ne sont pas concernées...

    Pour savoir quelles sont les seules lignes concernées par la mise à jour de la colonne members_character_level, il va falloir s’intéresser au contenu de la pseudo table INSERTED qui contient les lignes effectivement mises à jour pour cette colonne :

    IF UPDATE (members_character_name)
          BEGIN
             UPDATE members set members_character_level = 1
             WHERE EXISTS 
                 (SELECT * 
                  FROM   INSERTED 
                  WHERE  members.members_character_name = INSERTED.members_character_name) 
          END
    ; 

Discussions similaires

  1. Trigger sur UPDATE
    Par Laskar dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 01/10/2012, 18h58
  2. trigger sur update
    Par tofito dans le forum Débuter
    Réponses: 2
    Dernier message: 07/12/2009, 15h08
  3. Trigger sur update d'un champ
    Par Fused dans le forum Développement
    Réponses: 3
    Dernier message: 05/08/2009, 20h45
  4. Problème lors d'un trigger sur update
    Par yonialhadeff dans le forum Développement
    Réponses: 1
    Dernier message: 09/10/2007, 09h44
  5. Trigger sur Update et Insert
    Par Jérôme Lambert dans le forum Développement
    Réponses: 2
    Dernier message: 11/12/2006, 14h52

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