AS EMPRESAS ESTÃO "DESESPERADAS" POR ESTE TIPO DE PROFISSIONAL... - VOCÊ É UM DELES?
MEGA FORMAÇÃO EM INFRAESTRUTURA DE TI - O Conhecimento que Vira Dinheiro - CLIQUE AQUI
| « Anterior | Δ Página principal | ¤ Índice | Próxima » |
| Delphi com Banco de Dados Autor: Rodrigo Costa e Silvio Ferreira |
|||
|---|---|---|---|
| Lição 06 de 33 - Instrução DELETE | |||
Antes de iniciarmos o aprendizado sobre o uso da instrução DELETE, é importante aprendermos o conceito de “transação”. Uma transação de banco de dados é uma unidade de trabalho em que todas as instruções são processadas com sucesso ou nenhuma das instruções é processada. As transações garantem que o trabalho que está sendo realizado será bem-sucedido ou falhará completamente. Durante uma transação, nenhuma outra transação pode modificar os dados até que você decida que as modificações serão definitivas. Decidimos falar sobre transação aqui neste capítulo que é destinado a instrução DELETE apenas para que possamos excluir registros “à vontade” e depois consigamos reverter todas as exclusões sem que seja necessário inserir tudo novamente. Embora estejamos conhecendo o conceito de transações neste capítulo, ele vale para todas as operações de modificação de dados (INSERT, UPDATE e DELETE). Em cada instrução que executamos está ocorrendo uma transação, mesmo que não tenhamos conhecimento disso. Por exemplo, quando executamos um INSERT, o SQL Server inicia uma transação automaticamente e tenta efetuar a inserção, caso a inserção seja realizada com sucesso, ele confirma a alteração tornando-a definitiva, caso contrário, o SQL Server encerra a transação sem efetuar o INSERT. No script fictício abaixo, cada instrução SQL é uma transação separada. Se qualquer uma das instruções falhar, ela não afetará as outras. Cada instrução é bem-sucedida ou falha por inteiro, independentemente das outras instruções no script. INSERT INTO TABELA VALUES (‘VALOR1’,’VALOR2’) Se você pensar em operações que são realizadas apenas com uma instrução SQL, como por exemplo excluir um funcionário da lista de empregados de uma empresa, pode achar que não tem muita importância trabalhar com transações. Entretanto, quando estamos trabalhando com operações mais complexas como, por exemplo, pagamento de funcionário, a simples operação de pagamento pode ser composta por várias instruções SQL que fazem vários INSERT’S e UPDATE’S em várias tabelas para que um simples pagamento seja realizado. Desta forma, o pagamento só poderá ser efetivado se todas as alterações forem efetuadas com sucesso, senão todas as alterações devem ser desfeitas para que não haja inconsistências num banco de dados. Você pode controlar transações no SQL Server através das instruções:
Abaixo está um outro script fictício que utiliza o conceito de transações: BEGIN TRANSACTION INSERT INTO TABELA VALUES (‘VALOR1’,’VALOR2’) SE TODAS AS ALTERAÇÕES OCORRERAM COM SUCESSO ENTÃO Obviamente, o script acima é só uma ilustração de tratamento de transações. Durante o curso, iremos ver na prática com isso funciona através de uma aplicação em Delphi. Por hora, basta conhecermos os comandos que iniciam, confirmam e cancelam uma transação. Para que possamos excluir registros sem a preocupação de depois ter de inserir tudo de novo, execute o comando abaixo antes de começar a excluir: BEGIN TRANSACTION
A partir de agora, todas as instruções de modificação de dados só serão efetivadas após um COMMIT TRANSACTION ou descartadas após um ROLLBACK TRANSACTION. Você pode apagar o comando BEGIN TRANSACTION que acabou de executar para poder digitar os DELETE’S que serão exemplificados neste capítulo. Mais atente para um detalhe, você deve continuar na mesma janela que executou o BEGIN TRANSACTION pois a transação só é válida para uma sessão e cada janela do Query Analyzer é uma sessão diferente. A instrução DELETE, como o próprio nome sugere, tem por finalidade excluir registros de uma tabela. Sua sintaxe básica é a seguinte:
Através do comando DELETE é possível excluir um ou mais registros dependendo da condição, ou pode não excluir registro algum caso nenhum deles se encaixe na condição imposta. Exemplo de um comando DELETE: DELETE FROM MOTORISTAS WHERE NUM_MOTORISTA = 347
Traduzindo o comando acima: “EXCLUA O REGISTRO DA TABELA MOTORISTAS ONDE A COLUNA NUM_MOTORISTA FOR IGUAL A 347”. Você pode verificar se o registro foi realmente excluído executando o seguinte SELECT: SELECT * FROM MOTORISTAS ORDER BY NUM_MOTORISTA Veja se no resultado aparece o motorista de número 347.
Após analisar o resultado acima, podemos ver que o registro foi excluído, entretanto esta exclusão ainda não foi efetivada no banco de dados, pois iniciamos uma transação quando executamos o comando BEGIN TRANSACTION. Execute agora o seguinte comando: ROLLBACK TRANSACTION
O comando que acabamos de executar encerrou a transação que tínhamos iniciado descartando a exclusão que fizemos. Para constatar isto, execute novamente o comando: SELECT * FROM MOTORISTAS ORDER BY NUM_MOTORISTA
Veja que o registro que tinha sido excluído voltou a aparecer. Isto ocorreu porque iniciamos uma transação e, após fazer a exclusão, encerramos a transação revertendo o DELETE através da instrução ROLLBACK TRANSACTION. Se ao invés do ROLLBACK tivéssemos executado um COMMIT TRANSACTION, a exclusão seria definitiva. O DELETE também seria definitivo se tivéssemos executado o DELETE sem iniciar uma transação, pois o SQL Server executaria uma transação automática. Sendo assim, inicie outra transação executando o comando BEGIN TRANSACTION para que possamos excluir registros e depois reverter todas as exclusões. Quando executamos um DELETE temos que verificar se existe alguma dependência de chave estrangeira na tabela em questão. Por exemplo, vamos tentar excluir a Empresa “FLORES”:
Veja que após executar o comando, o SQL Server gera um erro de chave estrangeira, pois estamos tentando excluir uma empresa que possui ônibus ligados a ela, ou seja, não podemos excluir um registro “mãe” que possui registros “filhos”. Para excluir um registro “mãe” devemos primeiro excluir os registros “filhos”. Vamos então excluir todos os ônibus que pertencem a empresa FLORES que possui o código 101:
Agora que excluímos os ônibus da empresa FLORES podemos então excluí-la:
O comando DELETE também pode ser utilizado para limpar uma tabela, para isto basta executar a instrução sem utilizar a cláusula WHERE. Exemplo: DELETE FROM ONIBUS
O DELETE executado acima excluiu todos os registros da tabela Onibus sem filtrar qualquer condição porque não utilizamos a cláusula WHERE, ou seja, o comando limpou a tabela. Pronto! Acabamos o capítulo sobre a instrução DELETE e para desfazer todas as exclusões feitas, execute o comando ROLLBACK TRANSACTION.
|
|||
| « Anterior | Δ Página principal | ¤ Índice | Próxima » |
* Você pode baixar (fazer download) do conteúdo completo deste curso, em formato PDF, com 334 páginas, comprando o seguinte e-book:
DELPHI COM BANCO DE DADOS
|
MEGA FORMAÇÃO EM INFRAESTRUTURA DE TI (Online, Vitalício, Prático e Atualizado)! |
|
|
NÃO PROCURE VAGAS, SEJA PROCURADO! |
|
Para Todos os Detalhes, Acesse:
https://juliobattisti.com.br/curso-infra-ti.asp
|
Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434
Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208
Todos os direitos reservados, Júlio Battisti 2001-2026 ®
LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO
DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI