DELETE et jointure ? C'est possible ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : DELETE et jointure ? C'est possible ?

par Avicus » 11 mai 2006, 18:14

oki dans ce cas je pense que la meilleure solution est celle du dessus.

Tu supprime en testant le resultat de la suppression et si ça a bien été suipprimé tu supprime l'autre ;)

par coxine » 11 mai 2006, 18:04

oui j'ai besoin des deux tables ! :)
L'une a une utilité front-office et l'autre back-office

par Avicus » 11 mai 2006, 17:48

Dans ton cas est ce que tu es sur d'avoir vraiment besoin de deux tables ?

Il est possible de mettre des contraintes d'integrité sur les tables de type InnoDB (le type par défaut est généralement MyIsam)

par Ryle » 11 mai 2006, 17:39

Toutafé ! :)

Et entre les deux, tu peux même tester le résultat de mysql_query au cas où il y ait eu une erreur lors de la suppression dans la table A, pour ne pas supprimer les éléments de la table B :)

par coxine » 11 mai 2006, 17:30

OK !
Donc est ce que je peux écrire :
Si supp==ok, alors tu DELETE ça FROM cette tableA WHERE ....
et recommencer l'opération
DELETE ça FROM cette tableB WHERE .... ???

par Ryle » 11 mai 2006, 17:24

Il ne me semble pas que tu puisses supprimer simultanément des données de plusieurs tables avec une seule requête...

Normalemet cela se fait avec les contraintes d'intégrités dans lesquelles tu vas réellement lier les tables entre elles. Mais je ne crois pas que mysql sache les gérer pour l'instant.
En fait cela permet d'ajouter des controles et des actions automatiques en base du genre : si on supprime l'enregistrement parent, tu supprimes les enregistrements fils en cascade, ou au contraire, tant qu'il existe des fils, tu empêches que l'on puisse supprimer leurs parents, etc.

Reste les triggers (ou événements déclenchés lorsque tu touches à la base, et qui pourrait aller supprimer ton enregistrement) mais là encore, je ne crois pas que mysql sache le faire pour le moment... à confirmer :)

DELETE et jointure ? C'est possible ?

par coxine » 11 mai 2006, 17:15

Je voudrais pouvoir effacer des données de deux tables qui sont liées.

TableA
ID (clé primaire)
champ1
champ2
../..

TableB
ID (clé primaire)
TableA_ID
champ4
champ5
../..

Si TableA.ID=1214
Je souhaite effacer TableA.ID=1214 et TableB.TableA_ID=1214 !

Je ne connais pas les jointures, j'aimerais mieux comprendre cette possibilité.
Comment s'écrit la syntaxe si cette fonction est possible ?!
Merci !