banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 Thu 01 June 2023 10:52

Nyldan
Juste Inscrit !
Date d'inscription: 20 Mar 2023
Messages: 8

déclenchement trigger a l'ajout d'une colonne

Bonjour,

je souhaiterais savoir si il est possible (mais j'ai un gros doute...) pour un trigger de ne pas se déclencher à l'ajout ou à la suppression d'une colonne.
J'ai un fonction qui modifie la colonne date_maj avec celle du jour actuel et un trigger qui le déclenche avant un insert ou un update. Mon souci est que quand une colonne est ajoutée à ma table le trigger met à jour toutes les lignes de la base (ce qui est normal). Il y a t-il un moyen de contourner celà?

Mes deux code:

Code:

FUNCTION: schema.nom_fonction()

-- DROP FUNCTION IF EXISTS schema.nom_fonction();

CREATE OR REPLACE FUNCTION schema.nom_fonction()
    RETURNS trigger
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE NOT LEAKPROOF
AS $BODY$
BEGIN
    new.date_maj := NOW();
RETURN NEW;
END
$BODY$;

ALTER FUNCTION schema.nom_fonction()
    OWNER TO PUBLIC;

GRANT EXECUTE ON FUNCTION schema.nom_fonction() TO PUBLIC;

-------------------------------------------------------------------------------

-- Trigger: nom_trigger

-- DROP TRIGGER IF EXISTS nom_trigger ON schema.nom_table_ou_appliquer_trigger;

CREATE TRIGGER nom_trigger
    BEFORE INSERT OR UPDATE 
    ON schema.nom_table_ou_appliquer_trigger
    FOR EACH ROW
    EXECUTE FUNCTION schema.nom_fonction();

Merci pour vos retours

Hors ligne

 

#2 Thu 01 June 2023 11:34

JP LLORENS
Participant assidu
Date d'inscription: 12 Nov 2008
Messages: 231

Re: déclenchement trigger a l'ajout d'une colonne

Bonjour.
Peut être faut-il spécifier  les attributs qui vont déclencher le trigger sur l'UPDATE :

Code:

CREATE TRIGGER nom_trigger BEFORE
  INSERT 
OR
  UPDATE OF mageométrie, monattribut1, monattribut2 ...
ON schema.nom_table_ou_appliquer_trigger
FOR EACH ROW
EXECUTE FUNCTION schema.nom_fonction();

Ainsi le trigger ne va se déclencher que sur un INSERT ou sur la modification de la valeur d'un des attributs que l'on trouve après le UPDATE OF et uniquement sur la ligne concernée

JP

Hors ligne

 

#3 Thu 01 June 2023 14:25

Nyldan
Juste Inscrit !
Date d'inscription: 20 Mar 2023
Messages: 8

Re: déclenchement trigger a l'ajout d'une colonne

Merci pour votre retour,

Votre solution répond très bien à la problématique, je n'avais pas pensé à çà.

Encore merci,

Hors ligne

 

Pied de page des forums

Powered by FluxBB