{Oracle} une requette DELETE

angelique1 Messages postés 81 Date d'inscription   Statut Membre Dernière intervention   -  
devMan Messages postés 75 Statut Membre -
Bonjour
voila j'ai une requête qui fonctionne pas je ne sais pas compris pourquoi:
moi je suis entrain de supprimé tout les coureurs qui font partit de l'équipe festina

DELETE
FROM COUREUR
WHERE CodeEquipe IN ( SELECT CodeEquipe
FROM EQUIPE
WHERE NomEquipe ='Festina') ;

sachant que codeEquipe est une clés primaire dans la table Equipe et c'est une clés étrangère dans la table coureur

dans l'erreur il me disent violation de contrainte d'intégrité ;fils existant
s'il vous plait c'est urgent aidez moi
Configuration: Windows Vista
Safari 532.0

12 réponses

  1. fiu
     
    Salut

    La structure d'un delete avec jointure n'existe pas ! la syntaxe que tu as utilisé est tout à fait valide.

    ton problème est qu'il existe des lignes qui dépendent de certains coureurs Festina. Si tu supprimes ces coureurs, les lignes dépendant de ces coureurs se retrouvent à ne plus dépendre de quoi que ce soit... et ça, c'est pas bon.
    c'est similaire à si tu voulais supprimer l'équipe Festina : tu supprimerais d'abord les coureurs qui en dépendent.

    tu dois donc d'abord supprimer les lignes qui dépendent des coureurs à supprimer... Je suppose qu'elles sont dans des tables dont tu ne nous a pas parlé
    une fois cette suppression réalisée, tu pourras supprimer tes coureurs Festina.

    essaie donc
    select fils.constraint_name, fils.table_name, col.column_name
    from all_constraints pere, all_constraints fils, all_cons_columns col
    where pere.constraint_name = fils.r_constraint_name
    and fils.constraint_name = col.constraint_name
    and pere.table_name='COUREUR'
    and pere.constraint_type='P'
    ça devrait te lister la (les) table(s) et colonne(s) référençant tes coureurs et qui bloquent la suppression.
    4
    1. angelique1 Messages postés 81 Date d'inscription   Statut Membre Dernière intervention   10
       
      bonjour je ne sais pas si tu ma bien compris moi j'ai envie de supprimé des enregistrement voila
      par exemple cette requette veu dir supprimé tout les coureur qui font partit de l'equipe festina comme dans la table on a que le code de l'equipe et non le nom de l'equipe alor on ete obliger de fair une jointur

      et pour ce que tu ma donné bain j'ai eu sa

      CONSTRAINT_NAME TABLE_NAME COLUMN_NAME
      FR_NUMCOUREUR PARTICIPANT NUMEROCOUREUR

      merci essayée de m'aidé c vraiment gentille
      0
      1. fiu > angelique1 Messages postés 81 Date d'inscription   Statut Membre Dernière intervention  
         
        oui je t'ai bien compris :)
        et si la base refuse la suppression des coureurs Festina, c'est simplement parce qu'il reste de ces coureurs qui sont présents (ou plutôt référencés) dans l'association PARTICIPANT (dont tu nous as jamais causé).
        Je me permets de te renvoyer lire une fois de plus le chapitre "Intégrité référentielle". Une fois que tu l'auras assimilé, tout te paraitra beaucoup plus clair.
        0
  2. fiu
     
    salut
    tu as tout simplement des lignes dans une table X ou Y qui font référence à l'un des coureurs que tu veux supprimer.
    0
  3. angelique1 Messages postés 81 Date d'inscription   Statut Membre Dernière intervention   10
     
    bain j'ai une table EQUIPE(codeEquipe,nomEquipe,......)ou codeEQUIPE est une clés primaire

    et table COUREUR(numeroCoureur,...,codeEquipe)
    voila la structure des tables

    s'il vous plais donné moi la structur d'un delete avec jointur
    0
  4. holow1 Messages postés 739 Statut Membre 71
     
    bonjour,

    pour la 1ère problème c'est normal d'afficher violation de contrainte d'intégrité

    pour la 2ème problème tu n'a qu' applique la contrainte de clé étrangère
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. espoirfazou Messages postés 3 Statut Membre
     
    salut
    essaie avec cette requete
    delete *
    from courreur
    where courreur.codequipe=equipe.codeequipe
    and equipe.nomequipe='festina'

    bonne chance
    0
  7. devMan Messages postés 75 Statut Membre 15
     
    Saluit,
    Dans des situations similaires en MySQl
    nous utilisons la suppression en cascade....

    la il me semble que tu dois definir aussi delete/update en Cascade sur foreign key..
    je suis pas sur !!!!
    0
  8. fiu
     
    Soyons un peu sérieux !
    est-ce qu'un utilisateur standard a la possibilité d'activer ou de désactiver des contraintes ?
    a-t-il la possibilité de modifier des contraintes ?
    pourquoi mettre en place des contraintes si c'est pour les supprimer par la suite ?
    0
  9. devMan Messages postés 75 Statut Membre 15
     
    j'ai dis pas qu"il va supprimer les contraintes ...c pas ça
    je veux dire qu'il doit ajouter les propriétés ON DELETE CASCADE et ON UPDATE CASCADE a la clef étrangère ..
    et quand il supprime un primary key il va supprimer automatiquement ses clef étrangère...
    Effacement du 'père' => Effacement des 'fils' (en cascade)
    s'il est les droit bien sur ....
    0
  10. fiu
     
    Salut
    Primo: nous ne savons pas si Angelique1 a le droit de modifier les contraintes sur les tables utilisées
    Secundo: le cascade est une mauvaise habitude: le jour où l'on supprime accidentellement un client, on supprime automatiquement ses devis, ses commandes, ses livraisons, ses factures et ses règlements... la bonne affaire.

    la solution ici reste de faire du ménage dans participant puis de repasser la requête initiale.
    0
    1. angelique1 Messages postés 81 Date d'inscription   Statut Membre Dernière intervention   10
       
      bonsoir bain quand j'ai creer l'utlisateur je lui ai donné tout les previleges
      et en se qui concerne la table participant bain la clés primaire de la table coureur migre dans participant
      et c quoi la structur du( on delete cascade) bain moi quand j'ai creer mes table j'ai desclaré mes contrainte normalemen sans fair le delete on cascade alor s'il vous plait comment pourrai je la rajouté
      0
  11. chuka Messages postés 980 Statut Membre 379
     
    Salut,
    tu as la reponse au post N°8
    @+
    0
    1. angelique1 Messages postés 81 Date d'inscription   Statut Membre Dernière intervention   10
       
      comment sa poste 8 svp
      0
  12. devMan Messages postés 75 Statut Membre 15
     
    c a dire reponse n°8 da la discussion
    0