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 BEFORE ne se déclenche plus


Sujet :

PostgreSQL

  1. #1
    Membre averti
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 31
    Par défaut Trigger BEFORE ne se déclenche plus
    Bonjour,

    j'ai mon trigger qui permet de tronquer un champ de type texte mais lorsque je teste l'insertion il ne se déclenche pas voici mon trigger :
    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
    create table mytable (
      data text
    );
     
    create or replace function mytable_data_trunc_trigger()
      returns trigger language plpgsql volatile as $$
    begin
      NEW.data = substring(NEW.data for 2);
      return NEW;
    end;
    $$;
     
    create trigger mytable_data_truncate_trigger
      before insert or update on mytable for each row
      execute procedure mytable_data_trunc_trigger();
     
    insert into mytable values (NULL),('1'),('12'),('123');
     
    select * from mytable;

  2. #2
    Membre Expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Billets dans le blog
    8
    Par défaut
    Salut
    ça marche très bien chez moi (w7 et pg9.3.2). J'obtiens...
    ""
    "1"
    "12"
    "12"
    @+

  3. #3
    Membre averti
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 31
    Par défaut
    si j'essaye d'inserer une ligne dans ma base pour un champ qui depasse la langeur a limiter (qui est 2 dans mon cas) il m'affiche un msg d'erreur champ long pour character varying(2);

  4. #4
    Membre Expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Billets dans le blog
    8
    Par défaut
    Salut
    Il faut voir la ddl (la définition des colonnes) de ta table. Quelle interface utilises-tu?
    @+

  5. #5
    Membre averti
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 31
    Par défaut
    j'utilise le pgadmin

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    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 998
    Billets dans le blog
    6
    Par défaut
    Le fait de vouloir insérer une données d'une certaine longueur dans une colonne plus petite conduira toujours à une erreur, avant que le trigger BEFORE INSERT ne se déclenche. En effet, même si le déclencheur se produit avant la réelle insertion, les données sont préalablement positionnée dans une pseudo table d'insertion, dont la structure est identique à la table cible.
    D’où l'erreur rencontrée et d’où le déclencheur non joué.
    Dans le principe, toute erreur de type conduit la transaction à un arrêt immédiat avant même toute contrainte ou tout déclencheur !

    Visiblement vous avez un problème de modélisation de données... et de compréhension de ce qu'est un SGBDR !

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

Discussions similaires

  1. Trigger before logoff ne se déclenche pas
    Par r83 dans le forum PL/SQL
    Réponses: 4
    Dernier message: 27/11/2013, 10h42
  2. Simple Trigger before on insert.
    Par gregb34 dans le forum Oracle
    Réponses: 7
    Dernier message: 28/05/2006, 07h27
  3. [8i] Trigger before ou after delete
    Par Débéa dans le forum Oracle
    Réponses: 3
    Dernier message: 15/02/2006, 13h49
  4. Créer un trigger "before insert" avec SQL Server
    Par bubi dans le forum Développement
    Réponses: 2
    Dernier message: 14/11/2005, 10h12
  5. [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