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

SQLite Discussion :

Problème lors d'un UPDATE


Sujet :

SQLite

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Problème lors d'un UPDATE
    Bonjour à tous,

    J'ai un problème lorsque je réalise un update d'une ligne de la table 'motors'.
    L'erreur citée est "unable to execute statement","foreign key mismatch".

    Voici ci-dessous le code de création des deux tables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE motors(  
    mot_idName TEXT NOT NULL,
    mot_isDWP NUMERIC,     
    mot_typologies NUMERIC,
    PRIMARY KEY(mot_idName)
    );
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE sequences(
    seq_name TEXT NOT NULL,
    seq_timeout INTEGER,  
    seq_motor TEXT,      
    PRIMARY KEY(seq_name),
    FOREIGN KEY (seq_motor) REFERENCES motors(mot_idName)ON DELETE SET NULL ON UPDATE CASCADE
    );
    L'insertion d'une ligne dans 'motors'se déroule sans problème (foreign_keys désactivées pour l'insert). Mais l'update plante avec l'erreur citée ci-dessus (foreign_keys activées pour l'update).
    Voici la commande effectuée pour réaliser l'update :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE motors 
    SET mot_idName='test', mot_isDWP=1, mot_typologies=0                                WHERE rowid=1;
    Si je supprime la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FOREIGN KEY (seq_motor) REFERENCES motors(mot_idName)ON DELETE SET NULL ON UPDATE CASCADE
    Je n'ai plus d'erreur lors de l'update...

    J'insiste sur le fait qu'il s'agit bien d'UPDATE une ligne dans la table 'motors' et non pas 'sequences'. Je précise aussi que j'ai essayé en retirant le NOT NULL de la création.

    Merci infiniment aux personnes se penchant sur mon problème!

  2. #2
    Futur Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Je m'auto réponds. En réalité les deux tables ne sont pas les seules dans la base, vous vous en doutez bien.

    Une foreign key référençant la table 'motors' était mal conçue.

    Il faut savoir donc que SQLite ne teste pas les dépendances entre les tables lors de leur création, mais bien lors de l'appel de l'UPDATE (vu que je cascade mes appels). Cet appel est réalisé même si il n'y a aucune entrée dans les autres tables.

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

Discussions similaires

  1. [Utilisation] Problème lors d'un update-> directory already exists
    Par BigBulle dans le forum Subversion
    Réponses: 2
    Dernier message: 04/03/2009, 18h52
  2. Problème lors d'un update
    Par aloha dans le forum JPA
    Réponses: 8
    Dernier message: 18/02/2008, 10h17
  3. [VBA] problème lors de l'UPDATE à cause d'un sous-formulaire
    Par fellower dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 19/04/2007, 11h45
  4. problème lors d'un update
    Par poula dans le forum Oracle
    Réponses: 2
    Dernier message: 08/01/2007, 09h54
  5. Problème lors d'un Update sur une date
    Par Nany dans le forum ASP
    Réponses: 3
    Dernier message: 19/05/2004, 22h37

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