terça-feira, 10 de julho de 2007

Verificando se um registro existe (EXISTS function)


Se você precisar saber se um registro existe, a maneira mais comum é a execução do comando abaixo. Se a variável :idexists for maior que zero, o registro existe. (Este é um exemplo de Stored Procedure):

SELECT count(*) FROM company WHERE companyid = :id INTO :idexists;

Mas, o jeito certo de fazer isso é usar a função EXISTS(). Se você usar COUNT(*) o Firebird vai olhar todos os itens para validar a condição (i.e.
companyid = :id).

Se você usar a função EXISTS() o Firebird vai parar de procurar assim que achar um registro que atenda a condição. Isso é muito mais rápido.
idexists = 0;
SELECT 1 FROM rdb$database WHERE EXISTS(SELECT * FROM company WHERE companyid = :id) INTO :idexists;


Neobux