Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

[MySQL]:DELETE linhas de duas tabelas dependentes


Você não pode excluir de uma tabela enquanto os registros dependentes ainda existirem em outra tabela. No seu caso, a dependência fica assim
Transaction <- Purchase -> Item

Portanto, você precisa excluir todas as compras antes de poder excluir transações.

Como alternativa a essa abordagem de duas etapas, eu recomendaria configurar um ON DELETE CASCADE restrição e vai com isso:
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>
  )

Esteja ciente de que isso exclui qualquer Transaction (e, através do CASCADE, qualquer Purchase ) onde há um Item dependente com um Client_ID correspondente , independentemente de haver outras itens nele. Se isso não é o que você quer, a pergunta precisa ser refinada.