Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
adriano_servitec Colaborador
![Colaborador Colaborador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/colaborador.gif)
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Sáb Fev 12, 2011 11:15 am Assunto: Disparar trigger NO ACTION? ***Concluído*** |
|
|
Pessoal, como faço para gerar uma mensagem para o usuario quando ele esta tentando apagar uma tabela que contem movimentações entre suas referencias Pai/Filho. (Banco de dados Firebird)
Ou seja deixei como NO ACTION na tabela filho FK --- PK então ai não executa nenhuma ação.
Mais como mostrar pa ra o usuario uma mensagem que o filho não pode ser orfão ?
Obs: Isso direto no banco, não é no delphi, quero gerar o exception no FIREBIRD
Algo meio parecido com que estou querendo fazer, para disparar num TRIGGER
Código: | CREATE OR ALTER TRIGGER EXEPT_CLIENTE_REF FOR CLIENTES
ACTIVE BEFORE DELETE POSITION 0
AS
begin
if
(
Exists
(
SELECT c.nomeclie
FROM clientes C, ordemserv O
)
)
then
Exception RESTRICAO 'Atenção! Exite movimentação para este Cliente.';
end |
Mais desta forma ai não esta disparando o exception
Obrigado. _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Editado pela última vez por adriano_servitec em Seg Fev 14, 2011 11:32 pm, num total de 1 vez |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
adriano_servitec Colaborador
![Colaborador Colaborador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/colaborador.gif)
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Sáb Fev 12, 2011 5:15 pm Assunto: |
|
|
Pessoal, o que eu quero fazer é algo semelhante ao que fazemos no delphi
No delphi eu trataria assim
Código: | {verifica se existe referencia nas tabelas antes de exetudar o delete}
with qrylocal do
begin
close;
SQL.Clear;
SQL.Text := ' SELECT c.idclientes '+
' FROM clientes C '+
' INNER JOIN ordemserv O ON(c.idclientes = o.idclientes) '+
' WHERE c.idclientes = :codigo ';
ParamByName('codigo').AsInteger := StrToInt(edtgen.Text);
Open;
if not IsEmpty then
begin
Pt_MessageDlg('Atenção! Exite movimentação para este Cliente.', mtError, [mbok],0);
Exit;
end;
end; |
Ja diretamente no banco de dados Firebird é que não estou conseguindo _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
imex Moderador
![Moderador Moderador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/moderador.gif)
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Seg Fev 14, 2011 10:35 am Assunto: |
|
|
Experimente desta forma:
Código: | CREATE OR ALTER TRIGGER EXEPT_CLIENTE_REF FOR CLIENTES
ACTIVE BEFORE DELETE POSITION 0
AS
begin
if
(
Exists
(
SELECT first 1 idclientes
FROM ordemserv
WHERE (idclientes = old.idclientes)
)
)
then
Exception RESTRICAO 'Atenção! Exite movimentação para este Cliente.';
end |
obs: old.idclientes ---> valor da coluna idclientes da linha a ser excluida da tabela CLIENTES
Espero que ajude.
_________________
Assinatura: http://www.imoveisemexposicao.com.br/imobiliarias-em-suzano
Editado pela última vez por imex em Seg Mai 28, 2012 5:49 pm, num total de 1 vez |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
adriano_servitec Colaborador
![Colaborador Colaborador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/colaborador.gif)
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
|