domingo, 23 de setembro de 2007

Exclusão de registros filhos

Estes dias me solicitaram para criar uma trigger para excluir os registros filhos de uma tabela, como os itens da nota, sempre que o registro principal fosse excluído.
Expliquei o procedimento para a pessoa, mas aproveitei para comentar que ela poderia ter o mesmo resultado usando o recurso DELETE CASCADE, presente nas versões mais atuais dos bancos de dados.
Abaixo coloquei um exemplo da declaração de duas tabelas: pedido e os itens do pedido.
Sempre que o pedido for excluído, todos os itens do pedido serão excluídos automaticamente.

Create Table Pedido
(CodPedido Int not null primary key,
DataPedido DateTime,
Cliente Varchar(40));

Create Table ItemPedido
(CodPedido int not null,
CodItem int not null,
Qtdade decimal(9,2),
Valor decimal(9,2)
Constraint pk_ItemPedido Primary key (CodPedido, CodItem)
Constraint fk_ItemPedido_01 Foreign key (CodPedido)
References Pedido(CodPedido)
ON DELETE CASCADE)