PHP PDO Firebird вставка - PullRequest
       38

PHP PDO Firebird вставка

2 голосов
/ 17 января 2012

Я новичок в Firebird, но я хотел бы написать небольшой скрипт на PHP, который читает файл CSV и заполняет существующую базу данных Firebird своими данными.Проблема в том, что я не знаю, как использовать генератор автоинкремента.Я много гуглил, но для меня это все еще загадка.В базе данных определен генератор gen_main, и я могу использовать его в построителе запросов IBExpert, но не могу в PHP ... Я видел функцию с именем ibase_gen_id, что это за PDO-путь?Как происходит вставка строки с автоинкрементным полем с помощью PDO?Заранее спасибо!

1 Ответ

3 голосов
/ 17 января 2012

ПРИМЕЧАНИЕ. Я никогда не использовал 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> для получения сгенерированного идентификатора.

...