2015-11-10 2 views
0

мне нужно извлечь значение из этого запросаПовторного использования значению из последовательности оракула в CodeIgniter

$result = $this->db->query("SELECT MY_SEQ.NEXTVAL VALUE DUAL") ->result_array(); 

Переменные $ результат используется, чтобы сделать 3 последующие вставки, , но каждый раз мне нужно использовать $ результата [ 0] ['VALUE'], он добавит +1 к окончательному значению.

Как я могу использовать значение без использования вставки и запроса для получения текущего значения последовательности?

Ps: Я использую CodeIgniter и базы данных Oracle 9i

Заранее спасибо

+0

Доступ к переменной '$ result' не может увеличить значение. Повторное выполнение запроса делает это. – Narf

+0

На самом деле, это должно быть так, но я сделал тест, сохранил значение в переменной и сделал 1 вставку, он работал, когда я добавил вторую вставку сразу ниже, поле таблицы увеличивалось на 2 каждый раз, как-то codeigniter повторно выполняет запрос. –

+1

Там * был * ошибка в CodeIgniter 2, где запросы к oracle были фактически выполнены дважды, но 2.x официально не поддерживается сейчас, поэтому я надеюсь, что вы еще не используете его ... Если это не так, я бы посмотрел для триггеров, которые пытаются подражать MySQL 'AUTO_INCREMENT'. – Narf

ответ

1

После того, как вы оформили вызов NEXTVAL вы можете использовать

$result = $this->db->query("SELECT MY_SEQ.CURRVAL VALUE FROM DUAL") ->result_array(); 

Это дает текущее значение последовательности, однако, если другие сеансы одновременно вызывают эту последовательность, тогда вы не можете получить согласованный результат.

+0

В этом проблема будет не менее 10 пользователей на то же время обработки информации, я не хотел бы принимать этот риск –

Смежные вопросы