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

SQL Firebird Discussion :

Problème création contrainte d'intégrité référentielle


Sujet :

SQL Firebird

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    610
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 610
    Points : 213
    Points
    213
    Par défaut Problème création contrainte d'intégrité référentielle
    Bonjour.

    Je n'arrive pas à créer une contrainte d'intégrité référentielle portant sur une table de droits utilisateurs.
    je dispose de 2 Tables USERS( ID_USER, NOM_USER) et DROITS(ID_DROITS, NOM_DROITS) et d'une troisième table résultant de l'association des 2 précédentes AUTORISER_USER(ID_USER, ID_DROITS).

    Dans cette dernière je souhaite donc affecter un ou plusieurs droits à chaque utilisateur. Par erreur j'ai supprimé la contrainte de clé étrangère portant sur ID_USER et je souhaitai donc la reconstruire. Pour cela j'ai tenté la commande SQL suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    alter table AUTORISER_USER
    add constraint INTEG_AUTORISER_USER_1
    foreign key (ID_USER)
    references USERS(ID_USER)
    on delete CASCADE
    on update CASCADE;
    Mais qui est rejetée avec le message suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Unsuccessful metadata update
    STORE RDB$REF_CONSTRAINTS failed
    action cancelled by trigger (1) to preserve data integrity
    Name of Referential Constraint not defined in constraints table
    Apparement il s'agit d'un problème pour créer l'entrée dans la table RDB$REF_CONSTRAINTS. Je pensais que la commande se chargeait de cela justement.
    Y-a-t-il une chronologie à suivre ?


    Si vous avez une explication à me fournir, merci d'avance !

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 901
    Points : 6 026
    Points
    6 026
    Par défaut
    Tu n'aurais pas fait des ajouts dans cette table qui seraient en violation de la contrainte que tu essaies de (re)mettre en place ?
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    610
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 610
    Points : 213
    Points
    213
    Par défaut
    J'ai pensé à un problème de ce genre et vidé donc les 2 table USERS et AUTORISER. Mais cela ne change rien.
    J'ai même supprimé les données de la table DROITS mais cela ne change pas le message d'erreur.

    On dirait qu'il n'est pas possible de créer l'entrée dans la table RDB$REF_CONSTRAINTS.

  4. #4
    Membre actif
    Inscrit en
    Juin 2002
    Messages
    409
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Points : 234
    Points
    234
    Par défaut
    Il est possible que ta base soit abimee ! Je ne suis pas suffisament expert pour t'expliquer pourquoi, mais je sais que j'ai eu des petits soucis du meme genre, et impossible de les resoudre par moi meme !
    Solution :
    Fait un backup de ta base, puis un restore.C'est tout !
    Ca permet au SGBD de reconstruire ta base convenablement en reprennant chaque definition, index, trigger, contrainte dans le bon ordre. Et donc d'avoir des tables systemes correctes !

    Apres ca, reessais ta commande.

    PS : Pourquoi n'utilises tu pas un gestionnaire de BDD comme IBExpert qui franchement est TOP !

  5. #5
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Ne voyant pas pourquoi ça ne marcherait pas, à ta place :
    - je me déconnecterais de la base
    - je me reconnecterais et vérifierais que le vidage d'AUTORISER a bien été pris en compte
    - et je réessaierais l'ajout de la contrainte.

    Si ça ne marche toujours pas, suis le conseil de Kase74
    Roland

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    610
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 610
    Points : 213
    Points
    213
    Par défaut
    Finalement j'ai vidé mes tables concernées
    , supprimé les contraintes, index et autres éléments rattachés, puis supprimé les tables elles mêmes.

    J'ai reconstruit les tables avec les index et contraintes à l'aide de mon script SQL et là c'est OK.

    PS : J'utilise IBExpert qui un excellent Outil, en version 'Personnel' pour l'instant et donc limtée fonctionnellement. Mais j'ai lancé l'achat de la version FULL.

    Merci beaucoup pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de contrainte d'intégrité référentielle
    Par rillette87 dans le forum Requêtes
    Réponses: 1
    Dernier message: 11/05/2011, 16h11
  2. Contraintes d'intégrité référentielle
    Par Jenesépa dans le forum Langage SQL
    Réponses: 3
    Dernier message: 22/02/2011, 16h39
  3. [8i] Contraintes d'intégrité référentielles
    Par apersonnat dans le forum Administration
    Réponses: 4
    Dernier message: 03/09/2010, 07h48
  4. Phpmyadmin et contraintes d'intégrité référentielle ?
    Par Jiraiya42 dans le forum Requêtes
    Réponses: 28
    Dernier message: 22/02/2008, 10h31
  5. Réponses: 10
    Dernier message: 24/09/2006, 14h08

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