Suppression champs table liée

Rechercher

Suppression champs table liée

Par Tyween  -  2 reponses  -  Le 24/04/2020 12:30  -  Editer  - 

Bonjour,

Je souhaite supprimé un champs dans une table qui est liée voici mon code :

    $bdd->beginTransaction();  

    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  

    $requete = "DELETE FROM `albums_p` WHERE id=?";  

    $reponse = $bdd->prepare($requete);  

    $reponse->execute(array($_GET['id']));  

    $bdd->commit();  

    echo '<p class="alert alert-success"><i class="fas fa-check-circle"></i> Tout c\'est bien passé l\'album a bien été supprimé, Féliciations !!!</p>';  

    echo '<p><a href="albums.php?action=ajouter" class="btn btn-success ajout"><i class="fas fa-plus"></i> ajouter un albums</a> <a href="albums.php" class="btn btn-light"><i class="fas fa-list-ol"></i> retour liste</a></p>';  

J'ai le message suivant qui apparait :

    Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`cdos93_v2`.`photos`, CONSTRAINT `photos_ibfk_1` FOREIGN KEY (`id_th`) REFERENCES `albums_p` (`id_th`)) in C:\wamp64\www\cdos93_v2\regent\albums.php on line 167  

j'ai bien compris que le problème venait du faite que ma table soit liée, mais comment faire pour pouvoir sur le le champs en question sans impacter l'autre table,

D'avance merci de vos retours,

 

Réponses apportées à cette discussion

Par Cyrano  -  Le 25/04/2020 11:18  -  Haut de page  - 

Bonjour,
c'est un problème avec ce qu'on appelle l'intégrité référentielle.

Si on supprime une donnée qui est liée à une autre table sans respecter cette intégrité, l'autre table contiendra alors des données orphelines qui ne servent strictement à rien.

Dès lors, il faut préalablement supprimer le lien existant entre ces tables.

Ici, nous avons donc dans la table « album_p » des données liées à un certain nombre de lignes dans la table « photos », c'est à dire qu'il y a dans la table photos une clé étrangère qui fait référence à la clé primaire de la table albums_p.

Pour pouvoir vider la table albums_p, il convient au préalable de supprimer toutes les données liées de la table photos. Alors seulement aucune restriction liée à l'intégrité des données ne bloquera la requête de suppression dans la table albums_p

 
Par Tyween  -  Le 27/04/2020 09:34  -  Haut de page  - 

Bonjour,

Tout d'abord, je vous remercie d'avoir pris le temps de me répondre.

je ne souhaite pas vider intégralement la table mais seulement une ligne. Comment fait on pour supprimer les données liées et est ce que c'est bien valable uniquement pour le champs que l'on souhaite supprimer ?

Dans l'attente de vous lire,

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !

Identifiez-vous
Join |  ID/MDP? |