Criando integridade que não deixei excluir um registro que esteja sendo usado em outra tabela

Firebird

06/06/2014

Bom dia pessoal!

Sou um programador iniciante. Criei uma tabela chamada PESSOA e outra chamada TIPOPESSOA. Fiz o relacionamento entre as duas. Abaixo são os campos de cada:

[img]http://arquivo.devmedia.com.br/forum/imagem/346415-20140606-105716.jpg[/img]

[img]http://arquivo.devmedia.com.br/forum/imagem/346415-20140606-105821.jpg[/img]

Utilizo o Delphi 2010, IBExpert e Firebird 2.1. Gostaria de saber como faço a integridade no Banco de Dados para que ao tentar excluir um registro da tabela TIPOPESSOA que esteja ligada na tabela PESSOA, apareça uma mensagem: "Esse tipo de Pessoa não pode ser excluído porque está sendo utilizada na tabela Pessoa!" e não deixe fazer a exclusão.
Alisson Sudak

Alisson Sudak

Curtidas 0

Respostas

Joel Rodrigues

Joel Rodrigues

06/06/2014

Rapaz, faz um bom tempo que não uso Firebird, mas creio que você consiga fazer isso utilizando um trigger before delete na tabela TIPOPESSOA. Se o registro estiver sendo usado, você lança uma exceção, que será capturada no Delphi.
GOSTEI 0
Alisson Sudak

Alisson Sudak

06/06/2014

Então Joel... até essa parte eu entendi, mas eu não sei criar esse código =/
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

06/06/2014

Pesquise sobre como criar triggers e como lançar exceções no Firebird.
Link útil: http://www.firebirdsql.org/refdocs/langrefupd15-psql-exception.html
GOSTEI 0
Jair Souza

Jair Souza

06/06/2014

No firebird não tem nada parecido como no Access ?

[img:descricao=Integridade]http://arquivo.devmedia.com.br/forum/imagem/343353-20140606-134133.png[/img]
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

06/06/2014

Então, Jair. O Firebird faz esse tratamento, mas eu entendi que ele deseja customizar a mensagem de erro, para apresentar algo mais amigável para o usuário.
GOSTEI 0
POSTAR