Mysql
 sql >> Base de données >  >> RDS >> Mysql

[MySQL] :SUPPRIMER les lignes de deux tables dépendantes

Vous ne pouvez pas supprimer d'une table tant que des enregistrements dépendants existent toujours dans une autre table. Dans votre cas, la dépendance va comme ceci

Transaction <- Purchase -> Item

Vous devez donc d'abord supprimer tous les achats avant de pouvoir supprimer les transactions.

Comme alternative à cette approche en deux étapes, je recommanderais de configurer un ON DELETE CASCADE contrainte et allez avec ceci :

DELETE 
  Transaction 
WHERE 
  Transaction_ID IN (
    SELECT 
      Transaction_ID 
    FROM
      Purchase INNER JOIN Item ON Item.Item_ID = Purchase.Item_ID
    WHERE
      Item.Client_ID = <your Client ID here>
  )

Attention, cela supprime toute Transaction (et, via CASCADE, tout Purchase ) où il y a un Item dépendant avec un Client_ID correspondant , qu'il y ait ou non d'autres autres articles dedans. Si ce n'est pas ce que vous voulez, la question doit être affinée.