[firebase-br] Triggers - Verificação com problemas...

Francisco Thiago jeandeadlucky em yahoo.com.br
Sex Out 14 10:01:49 -03 2005


(Desculpem qqr digitacao errada.. tive um problema com a moto que atingiu as 
maos)

Pessoal. Preciso de uma sugestão (tenho pedido de mais né?)

No cadastro de enderecos, eu preciso sempre ter pelo menos um que seja de 
cobranca (cobranca = 'T')

Entao fiz uma trigger assim:
  declare variable V_ENDERECO integer;
begin
  V_ENDERECO = 0;
  if (new.CEND_COBRANCA = 'T') then
  begin
    select count(CEND_COBRANCA)
    from CAD_ENDERECO
    where CAD_ENDERECO.PESS_CODIGO = new.PESS_CODIGO
      and CAD_ENDERECO.CEND_CODIGO <> new.CEND_CODIGO
      and CAD_ENDERECO.CEND_COBRANCA = 'T'
    into :V_ENDERECO;
  end
  else if (new.CEND_COBRANCA = 'F') then
  begin
    select count(CEND_COBRANCA)
    from CAD_ENDERECO
    where CAD_ENDERECO.PESS_CODIGO = new.PESS_CODIGO
      and CAD_ENDERECO.CEND_CODIGO <> new.CEND_CODIGO
      and CAD_ENDERECO.CEND_COBRANCA = 'T'
    into :V_ENDERECO;
  end

  if ((V_ENDERECO > 0) and (new.CEND_COBRANCA = 'T')) then
    exception E_ENDERECO_COBRANCA ;
  else if ((V_ENDERECO <= 0) and (new.CEND_COBRANCA = 'F')) then
    new.CEND_COBRANCA = 'T';

Até aqui tudo bem, mas quando o usuário (só pra me sacanear) insere nesta 
sequencia:

Cobranca = 'F'
Cobranca = 'T'

Dá problema pq ele duplica a informacao. Alguém teria alguma sugestão?



Obrigado


Francisco Thiago de Almeida
Enter & Plug Informática
Divisão: Desenvolvimento e Banco de dados
Franca / SP
msn: thiago em enterplug.com.br



	

	
		
_______________________________________________________ 
Promoção Yahoo! Acesso Grátis: a cada hora navegada você acumula cupons e concorre a mais de 500 prêmios! Participe! http://yahoo.fbiz.com.br/





Mais detalhes sobre a lista de discussão lista