Criando integridade que não deixei excluir um registro que esteja sendo usado em outra tabela
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.
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
Curtidas 0
Respostas
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
06/06/2014
Então Joel... até essa parte eu entendi, mas eu não sei criar esse código =/
GOSTEI 0
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
Link útil: http://www.firebirdsql.org/refdocs/langrefupd15-psql-exception.html
GOSTEI 0
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]
[img:descricao=Integridade]http://arquivo.devmedia.com.br/forum/imagem/343353-20140606-134133.png[/img]
GOSTEI 0
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