C'è un modo per ottenere automaticamente il valore assegnato a una colonna:è la clausola RETURNING.
Quindi, ecco la mia sequenza:
SQL> select emp_seq.currval from dual
2 /
CURRVAL
----------
8140
SQL>
Lo userò in un'istruzione INSERT:
SQL> var seqval number
SQL> insert into emp
2 (empno, ename, deptno, sal, job)
3 values
4 (emp_seq.nextval, 'JELLEMA', 50, 4575, 'PAINTER')
5 returning empno into :seqval
6 /
1 row created.
SQL>
Ho restituito EMPNO in una variabile SQL*Plus che posso stampare e ha lo stesso valore di CURRVAL:
SQL> print :seqval
SEQVAL
----------
8141
SQL> select emp_seq.currval from dual
2 /
CURRVAL
----------
8141
SQL>
La tua prossima domanda è "CodeIgniter supporta la sintassi RETURNING?" Non ne ho idea, ma sospetto di no. La maggior parte dei framework non Oracle non lo fa.
C'è sempre la possibilità di racchiudere l'istruzione INSERT in una stored procedure, ma questa è una decisione architettonica che non piace a molte persone.