Aquí he encontrado el siguiente truco que me parece muy interesante para saber si existe un registro en una base de datos de Firebird. Dado que no lo he probado aún y que mis conocimientos son bastante limitados, no me he sentido capacitado para ponerlo en la sección "Trucos". He preferido ponerlo en un nuevo hilo y someterlo a vuestra consideración.
Está en portugués de Brasil, pero se entiende relativamente bien.
Saludos al foro.
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;
Postado por Erick Almeida às
7/10/2007 11:21:00 AM