Esta consulta SQL muestra los campos que conforman la llave primaria de una tabla FireBird...
Código SQL
[-]
select s.rdb$field_name from rdb$indices i
INNER JOIN rdb$index_segments s ON(i.rdb$unique_flag=1 and
i.rdb$relation_name=:tabla and s.rdb$index_name=i.rdb$index_name)
Esta consulta me sirvió para hacer un aplicativo que actualizaba información de una BD a otra, para la cual era necesario usar la sentencia UPDATE.