используя codeigniter, и вам нужно получить идентификатор последнего автоматически увеличивающегося идентификатора для следующего запроса, используя oci8

Использование codeigniter и oci8 для проекта.

$this->db->insert_id(); было бы идеально для получения последнего автоматически увеличивающегося идентификатора предыдущего запроса, но, похоже, он не работает в базе данных оракула.

Любая помощь приветствуется. Я бы хотел использовать mysql, но база данных oracle является обязательным требованием.

$this->db->insert_id(); для codeigniter точно так же, как mysql_insert_id() в php


person Brad    schedule 29.11.2010    source источник


Ответы (2)


Посмотреть здесь:

Получить автоматически сгенерированный идентификатор после вставки

$data = array("value1","value2","value3");
$db = OCILogon("user","password");
$stmt = OCIParse($db,"insert into mytable values (myid.nextval,:myfield) returning id into :id");

OCIBindByName($stmt,":ID",$id,32);
OCIBindByName($stmt,":MYFIELD",$myfield,32);

while (list(,$myfield) = each($data)) {
OCIExecute($stmt);
 echo "$myfieldgot id:$id\n";
}

Вы также можете рассмотреть использование уровня интерфейса БД, такого как PDO.

person SW4    schedule 29.11.2010
comment
Спасибо. Следовательно, это помогло мне найти codeigniter.com/forums/viewthread/123884/#613503, что может помочь. - person Brad; 29.11.2010
comment
Нет проблем, дайте нам знать, если это работает, чтобы это могло помочь другим в будущем :) - person SW4; 30.11.2010

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

ВЫБРАТЬ ' || имя cТаблицы || '_seq.currval из двойного

?

person johnny    schedule 29.11.2010
comment
Скажем, у меня есть таблицы комментариев (идентификатор, сообщение), транзакции (comment_id, step_id), шаги (идентификатор, заголовок) - таблица шагов предопределена, когда пользователь отправляет форму, он добавит ее в таблицу комментариев, и это будет ссылаться на один из шагов, поэтому мне нужно сохранить в таблице комментариев, затем взять вновь сгенерированный comment.id и сохранить его в таблице транзакций с соответствующим step_id. - person Brad; 29.11.2010
comment
так что это будет INSERT INTO комментарии (сообщение) VALUES («это мое сообщение») - тогда мне нужно сохранить comments.id этого вновь созданного идентификатора в $comment_id = comments.id из только что запущенного запроса, затем запустить запрос INSERT INTO транзакции ('comment_id', 'step_id') VALUES ($comment_id, $step_id) - не знаете, как/куда должен идти _seq.currval во всем этом. - person Brad; 29.11.2010
comment
посмотрите здесь: searchoracle.techtarget.com/tip/ за то, как они это реализовали. Я не знаю, есть ли у вас этот уровень доступа. - person johnny; 29.11.2010