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

PostgreSQL Discussion :

[Trigger] Trigger ne se lance pas toujours


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 20
    Par défaut [Trigger] Trigger ne se lance pas toujours
    Bonjour, j'ai mis en place des Trigger sur mes tables pour connaitre la derniere date ou cette table a été modifié,(insert,update, delete) mais il arrive quelque fois ou le trigger ne s'active pas mais je ne sais pas pourquoi. Il n'y a rien dans le log.

    Voila ma fonction trigger :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TRIGGER trig_an
      AFTER INSERT OR UPDATE OR DELETE
      ON animal
      FOR EACH ROW
      EXECUTE PROCEDURE modif_table_an();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE OR REPLACE FUNCTION modif_table_an()
      RETURNS trigger AS
    $BODY$
    BEGIN
    	UPDATE update_table SET date_update = now()
    	WHERE nom_table_modif LIKE 'animal';
    	RETURN NULL;
    END;
    $BODY$
      LANGUAGE plpgsql VOLATILE
      COST 100;
    ALTER FUNCTION modif_table_an()
      OWNER TO postgres;
    Merci de votre aide.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Par défaut
    Il n'y a rien dans le code de la fonction qui expliquerait le problème.
    A quoi se voit le problème d'ailleurs?
    Le date_update n'est pas du tout à la bonne heure?

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 20
    Par défaut
    Oui la date_update n'est pas du tout à l'heure.
    exemple: je fais une modification dans ma table (via hibernate), la modification est bien effectuée dans la table mais date_update n'a pas changé.

    Ce problème vient aléatoirement, généralement un coup sur deux.

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    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 999
    Billets dans le blog
    6
    Par défaut
    Hibernate est une grosse merde qui génère plus de problème et constitue une boîte opaque dans laquelle il est difficile de savoir ce que cette horreur fait !
    Pour vous donner une idée de pourquoi il faut éviter Hibernate et pas mal d'outils de ce genre, lisez cet article : http://sqlpro.developpez.com/cours/b...s-epaisses.pdf

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

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 20
    Par défaut
    Oui je suis d'accord, mais la le trigger est au niveau de postgres et apres l'insert/update, donc peu importe qui fait l'insertion/modif et comment, cela ne devrait pas avoir d'importance non ?

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    Bonjour,

    n'auriez-vous pas des problèmes de lock ?

    Si vous transformez ce trigger en trigger before update / insert et que dedans vous faites un set de la NEW.ma_date, avez-vous encore le même problème ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CREATE TABLE t_tst
    (
      id integer NOT NULL,
      t_date date,
      CONSTRAINT t_tst_pkey PRIMARY KEY (id )
    );
    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
     
    CREATE TRIGGER "_BEF_INS_UPD_DEL"
      BEFORE INSERT OR UPDATE OR DELETE
      ON t_tst
      FOR EACH ROW
      EXECUTE PROCEDURE "_INSERT_BEFORE_DATE"();
     
     
    CREATE OR REPLACE FUNCTION "_INSERT_BEFORE_DATE"()
      RETURNS trigger AS
    $BODY$begin
    NEW.t_date = current_date;
    return new;
    end;$BODY$
      LANGUAGE plpgsql VOLATILE
      COST 100;

Discussions similaires

  1. Trigger on insert ne fonctionne pas
    Par Stessy dans le forum PL/SQL
    Réponses: 18
    Dernier message: 18/01/2008, 20h51
  2. Trigger qui ne se déclenche pas
    Par eowyn7 dans le forum Forms
    Réponses: 1
    Dernier message: 13/09/2007, 10h57
  3. trigger qui ne s' execute pas
    Par Fred 57220 dans le forum SQL
    Réponses: 7
    Dernier message: 02/08/2007, 14h21
  4. [trigger] ... qui ne se déclenche pas
    Par bozo dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 14/01/2004, 11h31

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