Bonjour à tous,
je suis un peu débutant en sql (postgreSQL), j'ai besoin d'automatiser la mise à jour de certains champs de table d'une bases de données.
La particularité de ces tables est qu'elle se retrouve sous différents schémas alors j'ai décidé d'inscrire dans le code TG_TABLE_NAME et TG_SCHEMA_NAME afin d'indexer directement la table ou le schéma que visera le trigger.
Le code que j'ai écrit s'exécute parfaitement mais lorsqu'une action est faite sur une des tables, les champs sensés être mises à jour automatiquement restent toujours nul.
Ci dessous mon code

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
CREATE OR REPLACE FUNCTION downhole_position()
RETURNS TRIGGER
language 'plpgsql'
AS $$
BEGIN
--la table existe dans différents schéma de la base de données--
--lorsqu'une insertion ou mise à jour est effectuée sur une table--
    IF (TG_TABLE_NAME='INSERT' OR TG_TABLE_NAME='UPDATE')
--exécuter une requête de mise à jour sur des champs spécifiques--
--jointure interne à réaliser--
    THEN
        UPDATE TG_TABLE_NAME
            SET
                  New."X_from"="mEasting"+(New."mFrom"*cos(radians("Dip"))*sin(radians(180-"Azimuth"))),
                  New."Y_from"="mNorthing"-(New."mFrom"*cos(radians("Dip"))*sin(radians("Azimuth"-90))),            
                  New."X_to"="mEasting"+(New."mTo"*cos(radians("Dip"))*sin(radians(180-"Azimuth"))),
                  New."Y_to"="mNorthing"-(New."mTo"*cos(radians("Dip"))*sin(radians("Azimuth"-90)))
        FROM TG_TABLE_NAME as d
        INNER JOIN TG_TABLE_SCHEMA."DHCollar" as b
        ON d."HoleID"=b."HoleID";
    END IF;
RETURN NEW;
END
$$;
 
CREATE TRIGGER Downhole_Data_position
AFTER INSERT OR UPDATE
ON "Daloa"."TestDHLitho"
FOR EACH ROW
EXECUTE PROCEDURE downhole_position();

Merci de m'aider.