Blogger templates

Comunidade java aberto - Participe da nossa comunidade no facebook (clique aqui)

Visitas

quinta-feira, 18 de outubro de 2012

Usando CASCADE no Banco de Dados

,

Usando comandos Alter Table, Update e Delete


Neste artigo, vamos entender como funcionam os comandos ALTER TABLE, DROP, DELETE e UPDATE. Consideremos as seguintes tabelas com seus campos e registros:

01create table vendedor (
02codigo_vendedor int not null primary key,
03nome varchar (50),
04idade char (3),
05sexo char (1),
06salario decimal (10,2)
07)
08
09create table cliente (
10codigo_cliente int not null primary key,
11nome varchar (50),
12cidade varchar (10),
13tipo_industria char (1)
14)
15
16create table pedido (
17numero_pedido int not null primary key,
18codigo_cliente int,
19codigo_vendedor int,
20valor_pedido decimal (10,2)
21)
22
23alter table pedido
24add constraint fk_pedido_cliente foreign key (codigo_cliente) references cliente (codigo_cliente) on update cascade on delete cascade
25
26alter table pedido
27add constraint fk_pedido_vendedor foreign key (codigo_vendedor) references vendedor (codigo_vendedor) on update cascade on delete cascade
Os comandos ON UPDATE CASCADE e ON DELETE CASCADE servem para que, no momento que eu for utilizar meus comandos UPDATE ou DELETE para modificar os campos ou registros da minha tabela, todos as PK e FK sejam modificadas, também.

- Vendedor
- Pedido
- Cliente
Observe a tabela VENDEDOR. Suponhamos que preciso inserir mais quatro campos: e-mail, endereço, cidade e CEP. Eu não preciso excluir minha tabela VENDEDOR e criá-la novamente. O SQL oferece um comando onde posso alterar essa tabela: alter table.
Entro com o comando ALTER TABLE e o nome da tabela que será alterada, a cláusula ADD (adicionar) e o nome do novo campo e o tipo do dado.
Depois de inseridos meus novos campos, veja como ficou a tabela:
01alter table vendedor
02add email varchar (20);
03
04alter table vendedor
05add endereco varchar (40);
06
07alter table vendedor
08add cidade varchar (15);
09
10alter table vendedor
11add cep varchar (9);
Observação: os novos campos adicionados são nulos porque não foi adicionado nenhum registro.
Observe, agora, a tabela CLIENTE. Para excluir registros de alguma tabela especificada, podemos utilizar o comando DELETE junto com a cláusula WHERE. Se a cláusula WHERE estiver ausente, todos os registros da tabela especificada serão excluídos. Resultado: tabela válida, mas vazia.
Suponhamos que eu queira remover o cliente chamado Estrutura Construtora da minha tabela CLIENTE, que é a tabela onde são inseridos os meus clientes. Então, entramos com o comando DELETE e a tabela especificada, juntamente com a cláusula WHERE e o campo da tabela que será declarado o registro que será excluído.
Lembrem-se: a cláusula WHERE é uma condição. Se não utilizá-la para especificar o registro que será excluído, todos os campos da tabela CLIENTE serão apagados.
1delete from cliente where codigo_cliente = 4;
Observação: se no momento em que foram criados os relacionamentos de foreign keys da minha base de dados eu não tiver usado o ON UPDATE CASCADE, teríamos o seguinte erro:
Este erro que diz que o comando DELETE conflitou com a constraint fk_pedido_cliente criada para referenciar uma chave estrangeira entre a tabela PEDIDO e CLIENTE e, ainda especifica o nome da base de dados onde ocorre o erro, o nome da tabela e seu campo.
Esse erro aconteceu porque a tabela PEDIDO (CODIGO_CLIENTE) referencia CLIENTE (CODIGO_CLIENTE), ou seja, uma foreign key. Conclusão: utilize ON UPDATE CASCADE nos seus relacionamentos.
Ainda na tabela CLIENTE, vamos alterar o campo tipo_industria. Todos as linhas que tem tipo_industria como B deverão ser trocados para C. Como fazer isso? Temos um comando chamado UPDATE que muda os valores dos campos especificados em todas as linhas que satisfazem a condição. Podemos utilizá-lo com a cláusula SET, onde são especificadas as colunas que serão modificadas. As demais permanecem com seus valores atuais.
1update cliente set tipo_industria=’C’ where tipo_industria=’B’;
Dando um novo select na tabela CLIENTE, veja como ela ficou depois de excluirmos um cliente e fazendo os updates do tipo_industria:
Agora observe a tabela VENDEDOR. Vamos mudar o nome do vendedor Abel para Abel Medeiros. Para isso, utilizamos o comando UPDATE.
1update vendedor set nome=’Abel Medeiros’ where nome=’Abel’;
2
3update vendedor set codigo_vendedor=777 where codigo_vendedor=111;
Veja como ficou nossa tabela VENDEDOR depois que fizemos os updates para o nome Abel Medeiros e trocamos seu codigo_vendedor de 111 para 777.
Note também que, na tabela CLIENTE onde tenho um relacionamento com a tabela VENDEDOR (codigo_vendedor), tem-se os dados atualizados.
Para finalizar, recomendo a leitura do artigo Restrições de integridade referencial em cascata
Bons estudos!

Fonte(AdrielleAzeveno)

0 comentários to “Usando CASCADE no Banco de Dados”

Postar um comentário

Insira seu comentário

 

Java Aberto Copyright © 2011 -- Template created by O Pregador -- Powered by Blogger