sql >> Databáze >  >> RDS >> Mysql

[MySQL]:DELETE řádky ze dvou závislých tabulek

Nemůžete odstranit z tabulky, dokud závislé záznamy stále existují v jiné tabulce. Ve vašem případě bude závislost vypadat takto

Transaction <- Purchase -> Item

Než budete moci smazat transakce, musíte nejprve smazat všechny nákupy.

Jako alternativu k tomuto dvoufázovému přístupu bych doporučil nastavit ON DELETE CASCADE omezení a pokračujte tímto:

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

Pamatujte, že tím smažete všechny Transaction (a prostřednictvím CASCADE jakýkoli Purchase ), kde je závislá Item s odpovídajícím Client_ID , bez ohledu na to, zda existují nějaké jiné položky v něm. Pokud to není to, co chcete, je třeba otázku upřesnit.



  1. Jak zjistím, zda mám v transakci MySQL nepotvrzené zápisy?

  2. Synchronizace klientské databáze SQLite s databází serveru MySQL

  3. MySQL - načte hodnotu z jiné tabulky, pokud je sloupec null

  4. Operátory pro extrahování dílčích komponent JSON