Еще одна хитрость Firebird. Или у нас свой путь.

Довольно простая задача:
Найти в таблице не занятые числовые поля (ID). Например мы пишем в таблицу CLIENTS некие значения формата: ID; NAME; ADDRESS
Каждая новая запись имеет ID=ID+1
Что делать если некоторые записи были удалены, а нам нужно использовать их освободившиеся ID?
Тут нам поможет такой скрипт:

SELECT first 1 (clients.ID+1) as empty_id FROM clients
WHERE (SELECT 1 FROM clients as st WHERE st.id = (clients_pi.id + 1)) IS NULL
ORDER BY clients.id

В результате получаем пропущенный ID. Если из запроса убрать
 first 1
то будут выведены все доступные ID
Называется это "поиск пропущенных значений в таблице".