sql >> Database >  >> RDS >> Mysql

[MySQL]:VERWIJDER rijen uit twee afhankelijke tabellen

U kunt niet uit een tabel verwijderen zolang er nog afhankelijke records in een andere tabel bestaan. In jouw geval gaat de afhankelijkheid als volgt

Transaction <- Purchase -> Item

Je moet dus eerst alle aankopen verwijderen voordat je transacties kunt verwijderen.

Als alternatief voor die tweestapsbenadering raad ik aan om een ​​ON DELETE CASCADE beperking en ga hiermee akkoord:

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

Pas op dat hiermee elke Transaction . wordt verwijderd (en, via CASCADE, elke Purchase ) waar sprake is van een afhankelijk Item met een overeenkomende Client_ID , ongeacht of er andere . zijn artikelen erin. Als dit niet is wat je wilt, moet de vraag worden verfijnd.



  1. Invoegen in databaseprobleem... (Slechte tekencodering) PHP/MYSQL

  2. Is er een op tekst gebaseerde mysql-gebruikersinterface?

  3. Roep een opgeslagen procedure aan voor elke rij die wordt geretourneerd door een query in MySQL

  4. MySQL:efficiënt een tabel vullen binnen een opgeslagen procedure