Mysql
 sql >> Datenbank >  >> RDS >> Mysql

[MySQL]:LÖSCHEN Sie Zeilen aus zwei abhängigen Tabellen

Sie können nicht aus einer Tabelle löschen, solange noch abhängige Datensätze in einer anderen Tabelle vorhanden sind. In Ihrem Fall sieht die Abhängigkeit so aus

Transaction <- Purchase -> Item

Sie müssen also zuerst alle Käufe löschen, bevor Sie Transaktionen löschen können.

Als Alternative zu diesem zweistufigen Ansatz würde ich empfehlen, einen ON DELETE CASCADE Einschränkung und geh damit:

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

Beachten Sie, dass dadurch alle Transaction gelöscht werden (und über CASCADE jeder Purchase ), wo es ein abhängiges Item gibt mit passender Client_ID , unabhängig davon, ob es andere gibt Gegenstände darin. Wenn Sie dies nicht möchten, muss die Frage verfeinert werden.