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

SQL Firebird Discussion :

[FOR EACH ROW] Comment le remplacer


Sujet :

SQL Firebird

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 22
    Points : 13
    Points
    13
    Par défaut [FOR EACH ROW] Comment le remplacer
    Bonjour,

    Dans Firebird 2.1, le FOR EACH ROW dans les triggers n'existent pas. Or si jamais je fais un UPDATE d'une table sur plusieurs lignes et que je veux qu'à chaque ligne le trigger s'exécute, je ne peux pas le faire. Avec certains SGBD, on peut ruser en faisant un curseur sur la table inserted. Cependant, il ne semble pas y avoir la présence table inserted et deleted dans Firebird. Si quelq'un pouvait me donner une solution ce serait sympa. Bonne journée.

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut
    Citation Envoyé par O Oøps O Voir le message
    Or si jamais je fais un UPDATE d'une table sur plusieurs lignes et que je veux qu'à chaque ligne le trigger s'exécute, je ne peux pas le faire.
    Bien sûr que si. Si ton UPDATE impacte N lignes les triggers BeforeUpdate et AfterUpdate seront exécutés N fois. 1 fois par ligne impactée.

    @+ Claudius

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Salut claudius,

    Merci de ta réponse, mais du coup je comprend pas pourquoi certain SGBD ont inclus l'instruction FOR EACH ROW. Je croyais que dans le cas ou le FOR EACH n'était pas présent, c'était un déclencheur de niveau instruction, et dans le second cas c'est à dire avec l'instruction, c'était un déclencheur de niveau ligne. Donc tu es bien sur que ca s'applique à toutes les lignes touchées par l'UPDATE et non à l'instruction UPDATE en elle même. Merci d'avance.

  4. #4
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par O Oøps O Voir le message
    Donc tu es bien sur que ca s'applique à toutes les lignes touchées par l'UPDATE et non à l'instruction UPDATE en elle même.
    Tout à fait sûr.
    Effectue le test par toi-même. Un UPDATE affectant le champ F1 sur tout ou partie de la table, avec un trigger BeforeUpdate manipulant le champ F2 (ex F2 = F1 * 10).

    @+

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Je vais me tester ça. J'avais pas encore testé car j'étais persuader de l'utilisation du FOR EACH ROW.

    Merci beaucoup, je te souhaite une bonne journée.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 735
    Points : 807
    Points
    807
    Par défaut
    Citation Envoyé par O Oøps O Voir le message
    je comprend pas pourquoi certain SGBD ont inclus l'instruction FOR EACH ROW.
    On en vient au même conclusion : je trouvais ça bizarre aussi !

    http://www.developpez.net/forums/d72...e/#post4216250

Discussions similaires

  1. Trigger / for each row
    Par liseprachan dans le forum Développement
    Réponses: 9
    Dernier message: 04/11/2013, 12h10
  2. Trigger statement ou for each row
    Par maserati dans le forum Débuter
    Réponses: 1
    Dernier message: 10/02/2009, 23h53
  3. Equivalent for each row
    Par killerti dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 17/02/2008, 12h17
  4. [XSLT / XPATH] for-each-group: comment ça marche?
    Par be_tnt dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 24/11/2006, 09h40
  5. Annuler seulement certaines actions d'1 trigger for each row
    Par thebloodyman dans le forum Oracle
    Réponses: 8
    Dernier message: 28/02/2005, 14h17

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