Istnieje sposób na automatyczne przypisanie wartości do kolumny:jest to klauzula RETURNING.
Oto moja sekwencja:
SQL> select emp_seq.currval from dual
2 /
CURRVAL
----------
8140
SQL>
Użyję go w instrukcji 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>
Zwróciłem EMPNO do zmiennej SQL*Plus, którą mogę wydrukować i ma taką samą wartość jak CURRVAL:
SQL> print :seqval
SEQVAL
----------
8141
SQL> select emp_seq.currval from dual
2 /
CURRVAL
----------
8141
SQL>
Twoje następne pytanie brzmi:"czy CodeIgniter obsługuje składnię RETURNING?" Nie mam pojęcia, ale podejrzewam, że nie. Większość frameworków innych niż Oracle tego nie robi.
Zawsze istnieje możliwość zawinięcia instrukcji INSERT w procedurę składowaną, ale jest to decyzja architektoniczna, której wielu ludzi nie lubi.