Mysql
 sql >> Database >  >> RDS >> Mysql

[MySQL]:CANCELLA righe da due tabelle dipendenti

Non puoi eliminare da una tabella finché i record dipendenti esistono ancora in un'altra tabella. Nel tuo caso, la dipendenza è così

Transaction <- Purchase -> Item

Quindi devi eliminare tutti gli acquisti prima di poter eliminare le transazioni.

In alternativa a questo approccio in due fasi, consiglierei di impostare un ON DELETE CASCADE vincolo e vai con questo:

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>
  )

Fai attenzione che questo elimina qualsiasi Transaction (e, tramite CASCADE, qualsiasi Purchase ) dove è presente un Item dipendente con un Client_ID corrispondente , indipendentemente dal fatto che ce ne siano altri elementi in esso contenuti. Se questo non è quello che vuoi, la domanda deve essere precisata.