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 :

trigger update sur vue


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre régulier
    trigger update sur vue
    Bonjour,

    Je mets à jour une table à partir d'une vue en utilisant un trigger et une fonction..


    ma table contient deux champs a et id
    vue:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CREATE OR REPLACE VIEW vue AS 
     SELECT a,
        id
       FROM table;


    trigger:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CREATE TRIGGER t_update_valide
      INSTEAD OF INSERT OR UPDATE
      ON vue
      FOR EACH ROW
      EXECUTE PROCEDURE f_update();


    fonction :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    CREATE OR REPLACE FUNCTION f_update()
      RETURNS trigger AS
    $BODY$
    BEGIN
     
        IF (TG_OP = 'UPDATE') THEN
            update test set a=NEW.a   where test.id=NEW.id;
            RETURN NEW;
        END IF;
    END;
    $BODY$
      LANGUAGE plpgsql VOLATILE
      COST 100;


    mon soucis est que je n'ai pas de message d'erreur et aucune mise à jour ne s'effectue dans la table test.
    Ai je oublié quelque chose ? merci d'avance

  2. #2
    Membre régulier
    j'ai résolu ce problème en ne passant pas par la vue mais en créant un trigger directement sur la table.
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CREATE TRIGGER t_update_valide
      BEFORE INSERT OR UPDATE OF a
      ON table
      FOR EACH ROW
      EXECUTE PROCEDURE f_update();


    et si quelqu'un sait comment régler le problème avec la vue , je suis preneur.

    merci d’avance

###raw>template_hook.ano_emploi###