sql >> Databasteknik >  >> RDS >> Mysql

[MySQL]:DELETE rader från två beroende tabeller

Du kan inte ta bort från en tabell så länge beroende poster fortfarande finns i en annan tabell. I ditt fall går beroendet så här

Transaction <- Purchase -> Item

Så du måste radera eventuella köp först innan du kan radera transaktioner.

Som ett alternativ till den tvåstegsmetoden skulle jag rekommendera att du konfigurerar en ON DELETE CASCADE begränsning och gå med detta:

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

Tänk på att detta tar bort alla Transaction (och, genom CASCADE, alla Purchase ) där det finns en beroende Item med ett matchande Client_ID , oavsett om det finns några andra föremål i den. Om detta inte är vad du vill, måste frågan förfinas.



  1. MySQL världsdatabas Försöker undvika subquery

  2. Error Building Program med mysql-kontakt

  3. Hur kan flera rader sammanfogas till en i Oracle utan att skapa en lagrad procedur?

  4. Docker-maskin på Mac:Kan inte se monterade volymer på docker-värd/docka-maskin? Var lagras volymer fysiskt?