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] update inserted?


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2002
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 23
    Points : 20
    Points
    20
    Par défaut [trigger] update inserted?
    bonjour,

    mon pb concerne l'impossibilité de la mise a jour de la table inserted à l'intérieur d'un trigger (instead of INSERT ou for INSERT) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Update inserted
    set NO_Dossier=1
    Le message d'erreur du serveur est le suivant
    Serveur : Msg 286, Niveau 16, État 2, Procédure TG_INS_DOCPERSO, Ligne 40
    Les tables logiques INSERTED et DELETED ne peuvent pas être mises à jour.
    alors que j'ai rencontré beaucoup de sujets sur le forum conseillant ce genre de manip.....

    Pourriez-vous m'aider, svp?
    Merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 567
    Points
    19 567
    Billets dans le blog
    25
    Par défaut
    Exact ! Et j'en fus souvent l'auteur

    En fait, il faut écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TRIGGER ... ON MaTable FOR UPDATE
    AS
    BEGIN...
    update MaTable M
    set NoDossier=1
    From inserted i
    where M.id=i.id
    ...
    END

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2002
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 23
    Points : 20
    Points
    20
    Par défaut
    merci pour cette réponse.

    En essayant cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    update DOCENTETE dent
    				set dent.NoDossier=@n_suiv
    				From inserted i
    				where dent.do_piece=i.do_piece
    j'ai une erreur de syntaxe:
    Ligne 48 : syntaxe incorrecte vers 'dent'.
    Une idée??

  4. #4
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Pas de confusion cosminutza, ce n'est pas la table Logique inserted qui est modifiée !

    Fadace, il me semble qu'on ne renomme pas la table Ciblée par Update, pour faire simple, SQL Serveur n'accepte pas d'allias dans la clause UPDATE. En tout cas si j'ai bonne mémoire mais il reste à vérifier.

    Et si je reprennais l'exemple de Fadace, je peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TRIGGER ... ON MaTable FOR UPDATE 
    AS 
    BEGIN... 
    update MaTable 
    set NoDossier=1 
    From inserted i 
    where MaTable.id=i.id 
    ... 
    END

  5. #5
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 567
    Points
    19 567
    Billets dans le blog
    25
    Par défaut
    Citation Envoyé par WOLO Laurent
    Fadace, il me semble qu'on ne renomme pas la table Ciblée par Update, pour faire simple, SQL Serveur n'accepte pas d'allias dans la clause UPDATE. En tout cas si j'ai bonne mémoire mais il reste à vérifier.
    C'est exact !

  6. #6
    Membre à l'essai
    Inscrit en
    Août 2002
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 23
    Points : 20
    Points
    20
    Par défaut
    Ca marche, merci à tous!!!

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

Discussions similaires

  1. trigger "update sur insert" avec insertion multiple
    Par harf18 dans le forum Développement
    Réponses: 4
    Dernier message: 18/05/2009, 14h46
  2. création d'un seul trigger for insert, delete, update
    Par gilardino dans le forum Développement
    Réponses: 2
    Dernier message: 23/04/2009, 01h41
  3. Trigger Before Insert et Before Update
    Par NicoNours dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 14/08/2007, 10h20
  4. Trigger d'insertion et d'update
    Par Shiva dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 01/01/2007, 14h32
  5. TRIGGER avec inserted + UPDATE sur INSERTED
    Par shaka84 dans le forum Développement
    Réponses: 3
    Dernier message: 12/04/2006, 10h26

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