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

Requêtes PostgreSQL Discussion :

Automatisation Trigger de view


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre averti Avatar de pasdechances
    Homme Profil pro
    Alternant, Ingénieur en systèmes Informatiques et Industriels
    Inscrit en
    Septembre 2015
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant, Ingénieur en systèmes Informatiques et Industriels
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 218
    Points : 403
    Points
    403
    Par défaut Automatisation Trigger de view
    Bonjour,

    Comme vous pouvez le savoir, sous PostGres SQL, pour réaliser un INSERT sur une vue nous devons réaliser plusieurs test sur les paramètres des variables Old ou New.
    Je suis donc à la recherche des informations de construction de ma base, afin d'automatiser mes tests sur les différents paramètres de mes variables Old et New.

    Suite à de multiples recherches infructueuses (je ne doit pas avoir les bons mots clés lors de mes recherches), je viens vers vous afin de vous demander de plus ample informations sur le fonctionnement interne du SQL de PG.

    - lors d'un "insteadof" sur une vue, les seules variables global, générées et récupérables sur une fonction Trigger ,sont uniquement Old et New? si non lesquelles puis-je récupérer et comment ?
    - est-il possible de boucler sur les variables globale Old et New ? si oui un exemple ne serait pas de refus.
    - est-il possible de récupérer des informations relatives à la construction de notre base dans des fonctions Trigger SQL? Si oui comment ?

    A terme, je voudrai réaliser plusieurs algorithmes pour l'automatisation des vues sur les INSERT, DELETE et UPDATE, ce qui je pense pourrai être particulièrement utile pour réduire le code sur des vues complexes.

    Plus en détail et en pseudo code, l'algorithme auquel j'ai pensé en sachant qu'il doit etre bien plus complexe à réaliser (c'est une ébauche pour faire comprendre mon but):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    Fonction Test()    /* vérification du remplissage des champs de ma vue */
     
        déclaration de tableauTestTable
        déclaration de i , j
     
        Pour chaque élément de New
     
           tableParent prend la valeur du parent de lélément de New
           tableauTestTable[i][0] prend la valeur de tableParent     
     
           Si tableParent nexiste pas dans tableauTestTable alors
                nbsColonne[i] prend la valeur du nombre de colonnes dans tableParent
                Pour chaque colonne dans tableParent
                     nomColonneTable[i] prend la valeur du nom de la colonne
                colonne suivante
           fin si
     
           Si New.ColonneActuelle est null alors
               tableauTestTable[i][1] prend la valeur '0'
           Si non 
               tableauTestTable[i][1] prend la valeur '1'
           Fin si
     
           incrémentation de la variable i
     
        New suivant
     
        Boucle tant que j est inferieur ou égale a i
     
             tableauTableEtrangeres prend la valeur de la fonction de vérification des cléfs étrangères de la table en cours
     
             Pour chaque élément de tableauClefEtrangeres 
     
                  si tableauTestTable[j][0] est égale à une table présente dans tableauTableEtrangeres alors
                       on vérifie la présence du nom de la table dans la vue et son satut (rempli ou pas)
                       si pas rempli alors message derreur : "champs non rempli"
                  si non message derreur : "erreur sur la vue, information manquante"
     
             tableauClefEtrangeres suivant
     
             Fonction Insert(New, tableParent, nbsColonne, nomColonneTable)/*fonction de traitement de chaine pour réalisé un insert*/
        Loop
     
    Fin de fonction
    il est fort probable que l'algorithme ne soit pas complètement exact, je suis encore en train de travailler dessus.
    De plus je n'ai aucune certitude sur la faisabilité de plusieurs lignes .
    Si besoin d'autres détail, je vous les fournirais .

    Je prend toutes informations, liens, cours, réponses directe, informations ou autre.

    Je vous remercie de votre intérêt à mes questionnements.
    N'oublier pas de cliquer sur quand vous avez trouvé une solution qui vous convient.
    Si mon intervention vous a été utile un petit serait sympatique.
    Et si vous avez du temps à consacrer, pensez a venir aider sur le forum.
    C'est en aidant que l'on découvre certaines choses

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 760
    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 760
    Points : 52 541
    Points
    52 541
    Billets dans le blog
    5
    Par défaut
    Très rapidement...
    • Il est possible de récupérer le nom de la table et du schéma de la table avec des fonctions de déclencheurs (TG_TABLENAME, TG_TABLESCHEMA)
    • Il existe des triggers DDL (déclenché sur CREATE, ALTER...) permettant de lancer du code au moment de la création des objets. Je m'en sert sous MS SQL Server pour créer automatiquement des triggers DML sur les nouvelles tables ou modifier les mêmes triggers DML sur les tables modifiées.
    • La liste des colonnes d'une table s'obtient par le vue d'information de schéma normalisées INFORMATION_SCHEMA.COLUMNS en filtrant sur nom et schéma. Pas besoin de boucler, avec un peu d'astuce il existe des solutions ensemblistes directes.


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

  3. #3
    Membre averti Avatar de pasdechances
    Homme Profil pro
    Alternant, Ingénieur en systèmes Informatiques et Industriels
    Inscrit en
    Septembre 2015
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant, Ingénieur en systèmes Informatiques et Industriels
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 218
    Points : 403
    Points
    403
    Par défaut
    Merci SQLPro ,

    Je vais m'appuyer sur ces éléments pour la concrétisation de mon projet.
    N'oublier pas de cliquer sur quand vous avez trouvé une solution qui vous convient.
    Si mon intervention vous a été utile un petit serait sympatique.
    Et si vous avez du temps à consacrer, pensez a venir aider sur le forum.
    C'est en aidant que l'on découvre certaines choses

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

Discussions similaires

  1. Automatisation des Trigger pour une vue
    Par pasdechances dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/07/2016, 08h50
  2. Automatisation d'une tâche avec triggers
    Par zbhmida dans le forum PL/SQL
    Réponses: 3
    Dernier message: 11/01/2012, 11h13
  3. Creer View dans un trigger
    Par toams69 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 17/06/2009, 11h14
  4. Réponses: 6
    Dernier message: 21/06/2002, 14h48
  5. Réponses: 2
    Dernier message: 10/06/2002, 11h03

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