Es gibt eine Möglichkeit, den Wert einer Spalte automatisch zuweisen zu lassen:die RETURNING-Klausel.
Also, hier ist meine Sequenz:
SQL> select emp_seq.currval from dual
2 /
CURRVAL
----------
8140
SQL>
Ich werde es in einer INSERT-Anweisung verwenden:
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>
Ich habe EMPNO in eine SQL*Plus-Variable zurückgegeben, die ich drucken kann, und sie hat denselben Wert wie CURRVAL:
SQL> print :seqval
SEQVAL
----------
8141
SQL> select emp_seq.currval from dual
2 /
CURRVAL
----------
8141
SQL>
Ihre nächste Frage lautet:"Unterstützt CodeIgniter die RETURNING-Syntax?" Ich habe keine Ahnung, aber ich vermute, dass es nicht so ist. Die meisten Nicht-Oracle-Frameworks tun dies nicht.
Es gibt immer die Option, die INSERT-Anweisung in eine gespeicherte Prozedur einzuschließen, aber das ist eine architektonische Entscheidung, die vielen Leuten nicht gefällt.