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; |