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.