delete cascate no MySQL
19/06/2023
0
Como uso o delete cascate no MySQL?
Rhene
Curtir tópico
+ 0
Responder
Posts
19/06/2023
Arthur Heinrich
O DELETE CASCADE é uma feature que permite você excluir, simultaneamente, os registros de uma tabela e de todas as tabelas que fazem referência à tabela do delete.
Digamos que você tenha uma tabela chamada A (principal) e uma tabela B (secundária), onde B possui uma coluna que faz referência à tabela A, através de uma constraint.
Em uma situação normal, se você tenta excluir dados da tabela A, o banco precisa garantir que não hajam dados na tabela B que façam referência ao registro na tabela A que vai ser excluído.
Caso existam registros na tabela B, o delete é abortado por violar a constraint de foreign key. Quem faz isso é a constraint.
A propriedade "ON DELETE CASCADE" pode ser adicionada à constraint, de forma que, ao verificar a constraint em um delete, os registros encontrados em B sejam excluídos também.
-- Constraint normal, que não permite o delete na tabela A sem excluir antes os registros correspondentes de B:
alter table B add constraint A_B_FK FOREIGN KEY (IDT_A) REFERENCES A (IDT_A)
-- Constraint com cascade, que permite o delete na tabela A sem excluir antes os registros correspondentes de B:
alter table B add constraint A_B_FK FOREIGN KEY (IDT_A) REFERENCES A (IDT_A) ON DELETE CASCADE
Veja alguns exemplos em:
https://www.javatpoint.com/mysql-on-delete-cascade#:~:text=ON%20DELETE%20CASCADE%20clause%20in,related%20to%20the%20foreign%20key.
Digamos que você tenha uma tabela chamada A (principal) e uma tabela B (secundária), onde B possui uma coluna que faz referência à tabela A, através de uma constraint.
Em uma situação normal, se você tenta excluir dados da tabela A, o banco precisa garantir que não hajam dados na tabela B que façam referência ao registro na tabela A que vai ser excluído.
Caso existam registros na tabela B, o delete é abortado por violar a constraint de foreign key. Quem faz isso é a constraint.
A propriedade "ON DELETE CASCADE" pode ser adicionada à constraint, de forma que, ao verificar a constraint em um delete, os registros encontrados em B sejam excluídos também.
-- Constraint normal, que não permite o delete na tabela A sem excluir antes os registros correspondentes de B:
alter table B add constraint A_B_FK FOREIGN KEY (IDT_A) REFERENCES A (IDT_A)
-- Constraint com cascade, que permite o delete na tabela A sem excluir antes os registros correspondentes de B:
alter table B add constraint A_B_FK FOREIGN KEY (IDT_A) REFERENCES A (IDT_A) ON DELETE CASCADE
Veja alguns exemplos em:
https://www.javatpoint.com/mysql-on-delete-cascade#:~:text=ON%20DELETE%20CASCADE%20clause%20in,related%20to%20the%20foreign%20key.
Responder
Clique aqui para fazer login e interagir na Comunidade :)