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

[MySQL]:SLET rækker fra to afhængige tabeller

Du kan ikke slette fra en tabel, så længe der stadig findes afhængige poster i en anden tabel. I dit tilfælde går afhængigheden sådan her

Transaction <- Purchase -> Item

Så du skal slette eventuelle køb først, før du kan slette transaktioner.

Som et alternativ til den to-trins tilgang vil jeg anbefale at oprette en ON DELETE CASCADE begrænsning og gå med dette:

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

Vær opmærksom på, at dette sletter enhver Transaction (og, gennem CASCADE, ethvert Purchase ) hvor der er et afhængigt Item med et matchende Client_ID , uanset om der er nogen andre genstande i den. Hvis det ikke er det, du ønsker, skal spørgsmålet forfines.



  1. Dataintegritet og præstationsovervejelser i MySQL semisynkron replikering

  2. MySQL rækkefølge efter streng med tal

  3. Sådan fungerer UNHEX() i MariaDB

  4. Udvid EM Grid Control til nye noder