Mysql
 sql >> база данни >  >> RDS >> Mysql

[MySQL]:ИЗТРИВАНЕ на редове от две зависими таблици

Не можете да изтриете от таблица, докато зависими записи все още съществуват в друга таблица. Във вашия случай зависимостта е така

Transaction <- Purchase -> Item

Така че първо трябва да изтриете всички покупки, преди да можете да изтриете транзакции.

Като алтернатива на този двуетапен подход, бих препоръчал да настроите ON DELETE CASCADE ограничение и продължете с това:

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

Внимавайте, че това изтрива всяка Transaction (и чрез CASCADE всяка Purchase ), където има зависим Item със съответстващ Client_ID , независимо дали има други елементи в него. Ако това не е това, което искате, въпросът трябва да бъде прецизиран.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Последно актуализиран идентификатор на ред в Mysql

  2. MySQL MariaDB – Заявка с помощта на Temp Table

  3. Как да промените началния номер на поръчката в Magento

  4. Броене на полета със същата стойност

  5. DAO.Recordset.Update води до заключване на записа