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

Requêtes PostgreSQL Discussion :

TRIGGER qui viole la contrainte d'intégrité


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut TRIGGER qui viole la contrainte d'intégrité
    Bonjour, jessaie de faire un trigger vaec une procédure, j'ai une table worker avec un id en bigserial, j'aimerais le recupérer à chaque nouvelle insertion et l'insérer dans une autre table (abonnements)
    mon TRIGGER:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TRIGGER worker_ins
      AFTER INSERT
      ON worker
      FOR EACH ROW
      EXECUTE PROCEDURE insert_worker();
    ma PROCEDURE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE OR REPLACE FUNCTION insert_worker()
      RETURNS trigger AS
    $BODY$
    begin
    insert into abonnements (id_user) values (new.id);
    return new;
    end
    $BODY$
      LANGUAGE plpgsql VOLATILE
      COST 100;
    mes log(java) m'annoncent ceci :
    org.postgresql.util.PSQLException: ERROR: insert or update on table "abonnements" violates foreign key constraint "fk_users"
    Détail*: Key (id_user)=(37) is not present in table "users".
    Où*: SQL statement "insert into abonnements (id_user) values (new.id)"
    PL/pgSQL function insert_worker() line 3 at SQL statement
    et l'insertion qui devait déclenché le trigger ne se fait pas non plus, ce que je trouve bizarre car pour moi AFTER c'est aprés insertion.
    Merci.

  2. #2
    Membre émérite
    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
    Points : 2 890
    Points
    2 890
    Par défaut
    Détail*: Key (id_user)=(37) is not present in table "users".
    Où*: SQL statement "insert into abonnements (id_user) values (new.id)"
    L'insert est bien fait, ce n'est pas le problème: cette contrainte d'intégrité concerne une table nommée "users", et non pas la table "worker" sur laquelle porte le trigger.

  3. #3
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut
    oui, j'ai corrigé, en fait worker hérite de users, c'est pourquoi au début j'avais fait un trigger pour un insert after pour la table users, voyant que ça ne marchais pas j'ai changé uniquement pour worker mais j'avais oublié ce détail (la clé étrangère vers worker et non users).
    Du coup je ne suis pas arrivé à faire ce que je voulais (changer abonnements quand une des 2 tables héritant de users déclenche un insert). Je vais devoir faire 2 tables abonnements distinctes, je trouve ça pas élégant.
    Merci.

Discussions similaires

  1. Contrainte d'intégrité et trigger
    Par new_wave dans le forum PL/SQL
    Réponses: 19
    Dernier message: 01/10/2011, 20h40
  2. Contraintes d'Intégrité et Triggers
    Par ch.vankemseke dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/04/2008, 13h03
  3. Question sur les contraintes d'intégrités
    Par eGGyyS dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 27/04/2004, 13h51
  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
  5. Réponses: 5
    Dernier message: 25/11/2003, 09h41

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