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

Outils MySQL Discussion :

Erreur 1064 CREATE TABLE avec cle reflexive


Sujet :

Outils MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 117
    Par défaut Erreur 1064 CREATE TABLE avec cle reflexive
    Bonjour,

    la requete suivante provoque une erreur à la création de la clé étrangère. La création de la table seule ne pose pas de problème.
    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 TABLE VERSION (
      ID_VER INTEGER UNSIGNED NOT NULL,
      ID_VER_PREC INTEGER UNSIGNED NOT NULL,
      IndiceVersion Varchar(45) NULL,
      DateCreation DATETIME NOT NULL,
      DateModification DATETIME NULL,
      PRIMARY KEY(ID_VER),
      INDEX FK_VER_PREC(ID_VER_PREC),
      FOREIGN KEY(ID_VER_PREC)
        REFERENCES VERSION(ID_VER)
          ON DELETE RESTRICT
          ON UPDATE CASCADE
    )
    TYPE=InnoDB;
    Si je fais référence à une autre table pour la clé étrangère il n'y a pas d'erreur bien entendu.

    Merci d'avance

    PHPMyAdmin 2.6.1 & MySQL 4.1.9-max

  2. #2
    Membre chevronné Avatar de jota5450
    Inscrit en
    Janvier 2006
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Janvier 2006
    Messages : 263
    Par défaut
    slt...

    Ce que tu essayes de faire, je crois pas que se soit possible....

    Une Foreign key, est par difinition, um champ d´une table, qui fait reference a une cle primaire,ou index unique d´une autre table.

    Une Foreign key, qui pointe sur la propre table

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 117
    Par défaut
    Bonjour,

    c'est normalement possible avec MySQL d'après ce que j'ai lu, mais je n'ai pas trouvé de détails sur les possibilités ou les restrictions quand à l'utilisation de ce type de contrainte.

    Ca fonctionne très bien dans d'autres SGBD.

    L'intérêt est de s'assurer que dans mon cas ID_VER_PREC est un ID_VER present dans la table.
    Si je ne trouve pas comment ca fonctionne avec MySQL je ferais une autre table pour le gérer, mais ce n'est pas la seule dans ce cas.

  4. #4
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 944
    Par défaut
    Je viens de faire un essai concluant en 4.1.1:
    1/ passage du script de création de la table sans spécifier la FK
    2/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ALTER TABLE VERSION 
     ADD
      FOREIGN KEY(ID_VER_PREC)
        REFERENCES VERSION (ID_VER)
          ON UPDATE CASCADE
         ON DELETE RESTRICT
    bizarrement, après plusieurs tentatives infructueuses, j'ai inséré un espace après VERSION, et

  5. #5
    Membre chevronné Avatar de jota5450
    Inscrit en
    Janvier 2006
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Janvier 2006
    Messages : 263
    Par défaut
    slt....

    il me semble que je me suis tromper

    Juste une question:

    inserer:

    ID_ver, ID_ver_pre, indiceversion

    1, 1 , "XPTO"

    et apres essayer de suprimer

  6. #6
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 944
    Par défaut
    Clair que dans le contexte exposé, ce n'est pas possible du fait des contraintes.
    D'un autre coté, c'est le cas extrême que tu signales... charge à l'applicatif de refuser cette configuration (ce dont je ne doute pas compte-tenu du nom des colonnes )

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

Discussions similaires

  1. Erreur création table avec cle etrangere
    Par cd090580 dans le forum Outils
    Réponses: 2
    Dernier message: 05/01/2008, 19h17
  2. Erreur sur CREATE TABLE avec champ boolean
    Par codial dans le forum Bases de données
    Réponses: 1
    Dernier message: 23/03/2007, 18h30
  3. Réponses: 3
    Dernier message: 24/04/2006, 21h03
  4. [VBA] : Pb Create Table avec Champs Oui/Non
    Par GuidoBrasletti dans le forum Access
    Réponses: 8
    Dernier message: 15/03/2006, 19h11
  5. create table avec variable!
    Par JauB dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 30/01/2006, 09h48

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