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

Langage SQL Discussion :

Cherche des infos sur les techniques de Trigger


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 51
    Points : 40
    Points
    40
    Par défaut Cherche des infos sur les techniques de Trigger
    salut
    je cherche un tutoriel ou une documentation sur la technique de trigger,et y a t'il un autre moyen d'integrer des bd.
    merci d'avance,cordialement

  2. #2
    Rédacteur en Chef
    Avatar de Marc Lussac
    Homme Profil pro
    Responsable marketing opérationnel
    Inscrit en
    Mars 2002
    Messages
    28 666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable marketing opérationnel
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2002
    Messages : 28 666
    Points : 62 167
    Points
    62 167
    Par défaut
    Ca existe, mais les Triggers sont généralement une technologie particulière à un SGBD en particulier, autrement dit merci de nous dire pour quel SGBD ?

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 922
    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 922
    Points : 51 715
    Points
    51 715
    Billets dans le blog
    6
    Par défaut
    Ha non, pas d'accord, les triggers sont parfaitement défiis par la norme SQL:1999. Voici un extrait de ce que mon livre en dit :
    SQL, collection Synthex, Pearson Education 2005 (F. Brouard / C. Soutou) :
    7.6 Déclencheurs
    Un déclencheur (trigger en anglais) est un objet de la base, relatif à une table, contenant du code SQL exécuté automatiquement en fonction d'un ordre de mise à jour SQL associé. La norme SQL:1999 ne considère que les triggers portant sur les tables et se déclenchant avant ou après l'un des ordres SQL suivant : INSERT, UPDATE ou DELETE. En particulier il n'y a pas de trigger déclenché directement par l'ordre MERGE.
    Les déclencheurs peuvent être intéressant dans les cas suivants :
    • amélioration d'un modèle de données complexe (par exemple non relation, héritage, limitation de cardinalité...)
    • standardisation et normalisation de données (par exemple vérification de clef lors de la saisie d'un numéro de compte bancaire)
    • audit et traçabilité de l'évolution de données (par exemple suivi de toutes les modifications d'une table avec récupération de l'utilisateur SQL et de l'heure de survenance de l'événement)
    • archivage (par exemple déport des lignes comptables du mois passé dans une table d'une base annexe)
    • implémentation de règles métier particulières (par exemple limitation de la remise commerciale en fonction du CA annuel du client)...

    La syntaxe de création d'un déclencheur est la suivante :

    CREATE TRIGGER <nom_trigger>
    { BEFORE | AFTER }
    { INSERT | UPDATE [ OF <liste_colonne> ] | DELETE }
    ON <nom_table> [ REFERENCING <liste_alias_valeurs_anciennes_nouvelles> ]
    [ FOR EACH { ROW | STATEMENT } ]
    [ WHEN ( <prédicat> ) ]
    BEGIN ATOMIC
    <code_SQL>
    END

    <liste_alias_valeurs_anciennes_nouvelles> ::=
    OLD [ ROW ] [ AS ] <nom_correlation_valeurs_anciennes>
    NEW [ ROW ] [ AS ] <nom_correlation_valeurs_nouvelles>
    OLD TABLE [ AS ] <alias_table_valeurs_anciennes>
    NEW TABLE [ AS ] <alias_table_valeurs_nouvelles>
    ...
    A +

  4. #4
    Rédacteur en Chef
    Avatar de Marc Lussac
    Homme Profil pro
    Responsable marketing opérationnel
    Inscrit en
    Mars 2002
    Messages
    28 666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable marketing opérationnel
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2002
    Messages : 28 666
    Points : 62 167
    Points
    62 167
    Par défaut
    Certe, cependant des SGBD ont implémenté leur triggers avant cette norme et ce ne sont pas des triggers à ce standard

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    salut
    j'utilise une bd mysql et une bd postgresql,pour l'occasion j'aimerais savoir s'il y a un logiciel capable de generer des triggers sans taper du code sql (en utilisant le mode graphique)
    merci ,cordialement.

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 922
    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 922
    Points : 51 715
    Points
    51 715
    Billets dans le blog
    6
    Par défaut
    Non, car aucune interface graphique au monde n'est capable de pisser une requête SQL compte tenu de la complexité possible notamment en ce qui conerne les sous requêtes, les requêtes ensemblistes, la corrélation de sous requêtes, les fonctions de fenêtrage ou les requêtes récursives.

    Il vous faut donc apprendre le langage SQL.

    A +

  7. #7
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    d'accord,
    au fait je connais un peut le langage sql(creation de tables,vues,mis à jour,suppression,insertion..) mais pas les triggers
    avez vous des exemples de triggers par lequels je pourrais connaitre plus cette technique en plus de la syntaxe que vous avez posté , et pour l'occasion j'aimerais savoir s'il y a un utre moyen pour integrer des BDD( utiliser des vues par exemple)
    merci à vous,cordialement.

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 922
    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 922
    Points : 51 715
    Points
    51 715
    Billets dans le blog
    6
    Par défaut
    Lisez mon livre, voyez quelques exemples pour SQL Server dans l'article que j'ai écrit ici :
    http://sqlpro.developpez.com/cours/s...ransactsql/#L5

    A +

  9. #9
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    merci à vous
    mais j'ai une autre question:est ce qu'un trigger peut appeller un script php
    (j'ai un script import.php que je veux lancer apres chaque màj d'une table)
    cordialement

  10. #10
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 922
    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 922
    Points : 51 715
    Points
    51 715
    Billets dans le blog
    6
    Par défaut
    Oui, mais très dangereux et catastrophique en terme de performances. Rapellez vous que pendant toute la dirée du trigger TOUT LE CODE EST DANS LA TRANSACTION.... autrement dit vous bloquez les autres utilisateurs jusqu'à ce que tout le code du trigger ait été joué, y compris les appels éventuels externes.

    Bref, moins il y a de code dans un trigger et mieux c'est, moins il y a de trigger et mieux c'est.

    A +

  11. #11
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    je le fais dans le cadre de mon pfe donc ça ne poserais pas de probleme.
    est ce que cette syntaxe fera l'affaire :


    CREATE TRIGGER name { BEFORE | AFTER } { event [OR ...] }
    ON table FOR EACH { ROW | STATEMENT }
    EXECUTE PROCEDURE func ( arguments )


    et ci possible avez vous un exemple
    merci pour votre soutient.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/10/2009, 18h14
  2. Je cherche des infos sur 4D
    Par kervin dans le forum 4D
    Réponses: 2
    Dernier message: 10/12/2007, 11h59
  3. [W3C] Cherche une info sur les règles Opéra
    Par Diabless6 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 21/07/2007, 21h03
  4. Réponses: 6
    Dernier message: 14/03/2007, 12h09
  5. Réponses: 4
    Dernier message: 17/11/2006, 20h35

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