MySQL MariaDB

MySQL DELETE CASCADE

MySQL DELETE CASCADE
No MySQL, a instrução ON DELETE CASCADE está sendo usada para retirar as linhas correspondentes da tabela filha implicitamente sempre que as linhas são removidas da tabela pai. Este é um tipo relativo de comportamento contextual relacionado com a chave estrangeira.

Supondo que você tenha produzido duas tabelas com uma FOREIGN KEY dentro de um relacionamento de chave estrangeira, renderizando uma tabela pai e uma tabela filho. Depois disso, um destinado a uma FOREIGN KEY deve ser corrigido para que outra seja bem-sucedida em todas as atividades em cascata, então especificamos uma instrução ON DELETE CASCADE. Talvez se uma única instrução FOREIGN KEY determinar ON DELETE CASCADE, as funções em cascata irão disparar uma exceção.

Vamos entender como, em toda a tabela MySQL, poderíamos usar a instrução ON DELETE CASCADE.

Você deve abrir o Client Shell de linha de comando do MySQL instalado recentemente para continuar com o trabalho. Ao abrir, você será solicitado a inserir sua senha para continuar usando o shell do cliente de linha de comando do MySQL, conforme anexado abaixo.

A seguir, vamos construir duas tabelas chamadas “pedido” e “cliente”. Ambas as tabelas mútuas são conectadas com a função de exclusão em cascata utilizando uma chave estrangeira. Um “pedido” é a tabela pai neste ponto, e a tabela filho é o “cliente”. Com os scripts que os acompanham, junto com os respectivos registros, você deve construir ambas as tabelas. Use o comando “use” abaixo para selecionar o banco de dados no qual deseja trabalhar ou crie tabelas dentro. Aqui, "dados" é o banco de dados que estamos usando.

>> usar dados;

Criar tabela pai:

Em primeiro lugar, você deve criar a tabela “ordem” junto com seus campos usando o comando CREATE TABLE, conforme mostrado na consulta abaixo. A coluna “ID” será usada na próxima tabela “cliente” como uma chave estrangeira.

>> CREATE TABLE data.pedido (ID INT PRIMARY KEY AUTO_INCREMENT NOT NULL, Item VARCHAR (50) NOT NULL, Preço VARCHAR (50) NOT NULL);

Vamos adicionar alguns dados a esta tabela. Você deve executar as consultas mostradas abaixo no shell da linha de comando do MySQL e executar cada comando individualmente na linha de comando ou simplesmente adicionar todos os comandos na linha de comando em uma única etapa. Você também pode usar a GUI do MySQL Workbench para adicionar dados à tabela.

Agora vamos verificar a "ordem" da tabela após colocar os valores nela. Você pode usar o comando SELECT para esta finalidade da seguinte maneira:

>> SELECIONE * DOS dados.pedido;

Você pode ver que os dados foram salvos com sucesso na tabela "pedido" conforme o esperado.

Criar tabela filho com DELETE Cascade:

Agora é a vez de outra mesa chamada “cliente” ser criada.

Primeiro, você deve digitar a palavra-chave “CREATE” junto com o nome da tabela. Então, você deve adicionar nomes de campo ou coluna junto com seus tipos de dados. Você deve nomear a última coluna, que será usada como chave estrangeira nesta tabela, da mesma forma que você nomeou na tabela anterior. Como você sabe, a coluna "ID" da tabela "pedido" foi usada como chave estrangeira na tabela "cliente" como "ID do pedido". Depois disso, você deve adicionar a palavra-chave “CONSTRAINT”, que é usada para inicializar a chave FOREIGN, junto com a referência da tabela anterior. Agora você tem que usar a instrução “DELETE CASCADE” junto com a palavra-chave “ON”.

>> CREATE TABLE data.cliente (CustID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Nome VARCHAR (45) NOT NULL, OrderID INT NOT NULL, CONSTRAINT order_id_fk FOREIGN KEY (OrderID) REFERÊNCIAS dados.pedido (ID) ON DELETE CASCADE);

Depois que a tabela foi criada, e o DELETE CASCADE foi executado com sucesso nesta tabela, é hora de inserir alguns valores nesta tabela. Tente as instruções abaixo uma por uma no shell do cliente de linha de comando do MySQL para fazer isso.

Posteriormente, faça a inserção das consultas. É um ponto para verificar a tabela se os dados foram adicionados com sucesso ou não. Então, tente este comando abaixo para fazer isso:

>> SELECIONE * DOS dados.cliente;

Aqui, você pode ter um vislumbre da saída da tabela de que os dados são atribuídos de forma eficiente a ela e sem qualquer erro ou falha.

Excluir registros:

Agora, quando você exclui qualquer dado ou linha da tabela-pai, ele também irá excluir os dados ou linha da tabela-filho devido ao DELETE CASCADE habilitado na chave estrangeira mencionada na tabela-filho. Vamos tentar a consulta DELETE primeiro e, em seguida, verificar os resultados. Estaremos excluindo os dados da tabela “pedido” onde o “ID” é “11”. Se o mesmo “ID” for encontrado na tabela “cliente” na coluna de chave estrangeira, “OrderID”, então a linha ou dados relativos na tabela “cliente” também serão excluídos. Experimente o comando abaixo na linha de comando para fazer isso:

>> DELETE FROM data. pedido WHERE ID = '11';

Primeiro, vamos verificar a tabela pai. Em seguida, digite o comando SELECT encontrado abaixo para recuperar os registros restantes da tabela “ordem” após a exclusão de alguns registros. Você verá que o registro da tabela, onde o “ID” era “11”, foi excluído com sucesso desta tabela. Isso significa que os registros relativos do mesmo valor de ID, "11", também seriam excluídos da tabela filho.

>> SELECIONE * DOS dados.pedido;

Obter os registros da tabela filha usando o comando SELECT é tão simples quanto você fazia antes. Apenas tente o comando abaixo e você terá os resultados.

Ao obter os resultados, você pode ver que o registro de “CustID” tendo um valor de “1” que foi totalmente excluído. Isso ocorre porque a coluna “OrderID” tem o valor “11” em sua primeira linha, o que leva à exclusão dessa linha.

>> SELECIONE * DOS dados.cliente;

Quando você tenta eliminar a tabela-pai usando o comando DROP, o MySQL o impedirá de fazer isso. Isso ocorre porque a tabela pai habilitou o DELETE CASCADE nela. Então, para eliminar a tabela, você deve primeiro remover DELETE CASCADE dela.

Conclusão:

Terminamos com a explicação de DELETE CASCADE no MySQL. Para deixar mais claro, tente mais exemplos no final.

Melhores emuladores de console de jogo para Linux
Este artigo irá listar software de emulação de console de jogo popular disponível para Linux. A emulação é uma camada de compatibilidade de software q...
Melhores distros Linux para jogos em 2021
O sistema operacional Linux percorreu um longo caminho desde sua aparência original, simples e baseada em servidor. Este sistema operacional melhorou ...
Como capturar e transmitir sua sessão de jogo no Linux
No passado, jogar era considerado apenas um hobby, mas com o tempo a indústria de jogos viu um grande crescimento em termos de tecnologia e número de ...