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

Langage SQL Discussion :

suppression en cascade (delphi + sql)


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 16
    Par défaut suppression en cascade (delphi + sql)
    Bonjour a tous,
    j'ai chercher mais j'ai trouver que des morceaux de code sans jamais avoir d'exemple concret donc j'explique mon soucis et ce serait cool d'avoir des démarches, solutions claires :

    pour exemple j'ai deux tables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    create table realisateur 
    ( 
       code_realisateur integer, 
       nom_realisateur varchar(30), 
       prenom_realisateur varchar(30), 
       constraint PKrealisateur primary key (code_realisateur) 
    );

    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    create table film 
    ( 
       num_film integer, 
       nom_film varchar(30), 
       affiche varchar(35), 
       code_type_film integer, 
       code_realisateur integer, 
       constraint PKFILM primary key (num_film), 
       constraint FKFILM1 foreign key (code_type_film) references type_film(code_type_film), 
       constraint FKFILM2 foreign key (code_realisateur) references realisateur(code_realisateur), 
    );

    j'apprend a personne comment marche une clés étrangère donc voila j'ai a choisir un réalisateur et a l'effacer et avant de l'éffacer, il doit y avoir tout les film (table film) qui contient le réalisateur en question qui doivent etre éffacer..j'aimerais avoir la syntaxe, démarche pour que cette suppression se fasse en cascande (dans Tfilm puis dans Trealisateur)

    Désolé du post assez long mais bon, en esperant une réponse bonne soiré a tous !!

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Il faut utiliser ON DELETE CASCADE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE FILM 
    ( 
       NUM_FILM INTEGER, 
    [...]
       CONSTRAINT FKFILM2 FOREIGN KEY (CODE_REALISATEUR) REFERENCES REALISATEUR(CODE_REALISATEUR) ON DELETE CASCADE 
    );
    Au passage, quelques remarques :
    1/ j'ai corrigé une erreur de frappe : la dernière virgule dans le create table film
    2/ sous interbase 6 tu ne peux pas spécifier qu'une colonne est une primary key si elle ne porte pas de constrainte NOT NULL alors que toi apparemment tu peux ? (quel est ton SGBD ?)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 16
    Par défaut
    SQL server
    merci pour la réponse mais juste en rajoutant cette ligne a la création de ma table ca suffira a ce que la suppression se fasse d'elle meme ??

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Fais comme moi : utilise 2 tables pour tes tests (PK -> FK) et tu verras vite si ça fait effectivement ce que tu souhaites :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    CREATE TABLE A1 (
           X INTEGER NOT NULL,
           Y VARCHAR(10),
           CONSTRAINT PKy PRIMARY KEY (X) 
    );
     
    INSERT INTO A1 (X, Y) VALUES (1,'un');
    INSERT INTO A1 (X, Y) VALUES (2,'deux');
     
    CREATE TABLE A2 (
           X INTEGER NOT NULL,
           Y VARCHAR(10),
           CONSTRAINT PKy2 PRIMARY KEY (X),
           CONSTRAINT FK1 FOREIGN KEY (X) REFERENCES A1 (X) ON DELETE CASCADE
    );
     
    INSERT INTO A2 (X, Y) VALUES (1,'ref -> 1');
     
    DELETE FROM A1;

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/01/2009, 12h32
  2. Suppression en cascade dans sql server 2000
    Par Contact2012 dans le forum Développement
    Réponses: 3
    Dernier message: 10/10/2008, 16h55
  3. [Postgre Sql] requête pour suppression en cascade
    Par viny dans le forum Langage SQL
    Réponses: 1
    Dernier message: 11/10/2006, 23h39
  4. Suppression en cascade (delphi + sql)
    Par st0nky dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/11/2005, 22h45
  5. Delete on cascade avec SQL server
    Par fadoua dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 14/01/2004, 11h02

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