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 :

Suppression en cascade (VB.NET)


Sujet :

SQLite

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut Suppression en cascade (VB.NET)
    Bonjour

    je travaille sous Visual Studio en VB.Net sur une appli fonctionnant avec une BdD créée sous SQLite, celle-ci ayant été créée sous SQlite Expert (j'utilise parfois SQlite ADministrator également)

    J'ai 2 tables reliées par une relation de 1 à plusieurs. La relation est déclarée dans avec une contrainte de Update et Delete en cascade visible dans SQlite Expert comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE tableenfant (
      [cléprimaire] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
      [cléexterne] INTEGER CONSTRAINT [tableparent-tableenfant] REFERENCES tableaparent([cléexterne]) ON DELETE CASCADE ON UPDATE CASCADE, 
      [autrechamp1] TEXT NOT NULL, 
      [autrechamp2] REAL, 
      [autrechamp3] [VARCHAR(50)], 
      [autrechamp4] INTEGER NOT NULL);
    Lorsque je supprime un enregistrement par le code, dans tableparent, je m'attends à ce que les enregistrements de la tableenfants soient également supprimés. Or il n'en est rien.

    Je précise que je suis assez novice sur SQLite et VB.NET donc j'ai peut-être raté un truc élémentaire, mais je ne sais pas trop où chercher

    Si qqun peut m'aider, je lui en serais très reconnaissant.

    EDIT: j'ai vu qu'on peut le faire avec des triggers, mais j'ai aussi vu que, depuis peu, SQlite gère les foreign keys à condition de taper qqch comme :
    Mais je n'ai pas compris où l'on tape cette instruction quand on est en VB.NET

  2. #2
    Membre émérite
    Homme Profil pro
    Chef de projets retraité
    Inscrit en
    Juillet 2011
    Messages
    458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Chef de projets retraité
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2011
    Messages : 458
    Par défaut
    Bonjour,

    Comme pour toute commande sqlite, tu mets ta commande dans le texte sql et tu le fais exécuter

    quelque chose comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql = "pragma foreign_keys=ON"
    Ensuite tu fais exécuter cette commande et si VB ne filtre pas, tu devrais obtenir le résultat attendu.

    Cordialement

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut
    OK, mais il faut le faire
    - en début de programme une fois pour toute ?
    ou bien
    - avant chaque instruction SQL susceptible de faire jouer les foreign keys ?

    Dans le 2ème cas, cela me semblerait assez lourd et du coup beaucoup plus simple d'utiliser les triggers comme dans le bon vieux temps. En effet, les triggers sont enregistrés une bonne fois pour toute dans le fichier de BdD indépendamment de tout code.

  4. #4
    Membre émérite
    Homme Profil pro
    Chef de projets retraité
    Inscrit en
    Juillet 2011
    Messages
    458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Chef de projets retraité
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2011
    Messages : 458
    Par défaut
    Bonjour,

    Pour autant que j'ai compris l'aide SQLITE, c'est valide tant que tu ne fermes pas la base. Par contre je ne connais pas VB et je ne sais pas si c'est fait à chaque instruction ou si il conserve la connexion durant tout le programme (ou s'il y a des moyens de rendre ces connexions persistantes

    Cordialement

Discussions similaires

  1. Suppression en cascade
    Par music03 dans le forum Installation
    Réponses: 1
    Dernier message: 29/07/2005, 20h47
  2. suppression en cascade dans formulaire et sous-formulaire
    Par tooneygirl dans le forum Access
    Réponses: 7
    Dernier message: 20/06/2005, 14h17
  3. Requetes de suppression en cascade
    Par log2n dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 20/05/2005, 10h07
  4. Suppression en cascade
    Par log2n dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/05/2005, 20h33
  5. [debutant]suppression en cascade
    Par christophebmx dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 03/05/2005, 09h51

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