ПРИМЕЧАНИЕ. Я никогда не использовал PDO, поэтому не могу комментировать особенности PDO.
В зависимости от ваших конкретных потребностей вы можете использовать: СЛЕДУЮЩЕЕ ЗНАЧЕНИЕ ДЛЯ
NEXT VALUE FOR <sequence-name>
или GEN_ID
GEN_ID(<sequence-name>, 1)
Чтобы получить следующее значение последовательности / генератора.
Вы можете использовать их непосредственно в своем выражении INSERT или сначала выполнить запрос SELECT для RDB $ DATABASE, чтобы получить значение самостоятельно перед вставкой: в Firebird вам нужно использовать SELECT для получения значений, и вам всегда нужно выбирать против стола. RDB $ DATABASE гарантированно содержит только одну строку (например, Oracle DUAL).
Таким образом, вам нужно SELECT NEXT VALUE FOR GEN_MAIN FROM RDB$DATABASE
или SELECT GEN_ID(GEN_MAIN, 1) FROM RDB$DATABASE
, чтобы получить следующее значение последовательности.
В целом, однако, я бы посоветовал вам добавить триггер для автоматического увеличения, см. Руководство по генератору Firebird для получения подробной информации. Затем вы можете использовать INSERT ... RETURNING <column-list>
для получения сгенерированного идентификатора.