--- Osvaldo Kussama <[EMAIL PROTECTED]>
escreveu:

> Gaspar von Scharten <[EMAIL PROTECTED]>
> escreveu:       Thiago :
>   
>           A  solução efetiva não é bem esta. O
> problema é que você está fazendo um "count"  . 
>   
>  <<<SELECT INTO res  COUNT(cpf) as num_cpf 
>  <<<FROM candidato WHERE cpf = ncpf AND id_candidato
> !=  id_cand;
> 
>            Mesmo com índice parcial o postgres vai
> acessar mais  registros  do que é necessário !
>   
>           O  melhor seria fazer alguma coisa
> parecida com :
>   
>              IF  new.cpf is not null  THEN
>                  IF EXISTS(select 1 from candidato
> where new.cpf= cpf  ) THEN  
>                 RAISE EXCEPTION
> ..............................
>   
>   
>   
>   
>   
>  Gaspar at inforep.com.br
>             Você considerou a possibilidade de
> criação de um índice parcial?
> 
> CREATE UNIQUE INDEX seu_indice_parcial ON candidato
> (ncpf)
>     WHERE (ncpf != '' AND ncpf
>  NOTNULL);
> 
> 
> []s
> 
>      Osvaldo
> 
>      
> P.S. Isto não ajudará nos "UPDATES      GERAIS".
> Avalie com um EXPLAIN ANALYZE o plano de execução de
> um update sem      cláusula where.
> 
> 
> 
> 
> Creio que a criação de um índice UNIQUE como
> sugerido acima é efetiva pois qualquer tentativa de
> inclusão de um cpf já existente, ou alteração para
> um cpf já existente, provocaria um erro no comando,
> não havendo necessidade, portanto, da trigger para
> verificar a existência do cpf, o próprio PostgreSQL
> cuidaria disso. 
> 
> []s
> Osvaldo
> 
> 
>               


Se quiser continuar com a trigger, vc poderia por
dentro dela um código como o seguinte:

PERFORM cs_log('Atualizando o registro '||
NEW.<chave_primaria>);

Da um 
tail -f <arquivo_de_log>
executa a query problematica e observa se ela travou
mesmo ou eh demorada (acho mais provavel) observando a
saida do arquivo de log.


                
_______________________________________________________ 
Abra sua conta no Yahoo! Mail: 1GB de espaço, alertas de e-mail no celular e 
anti-spam realmente eficaz. 
http://mail.yahoo.com.br/
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
http://www.postgresql.org.br

Responder a