Der er en måde at få værdien automatisk tildelt til en kolonne:det er RETURNING-sætningen.
Så her er min sekvens:
SQL> select emp_seq.currval from dual
2 /
CURRVAL
----------
8140
SQL>
Jeg vil bruge det i en INSERT-sætning:
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>
Jeg returnerede EMPNO til en SQL*Plus-variabel, som jeg kan udskrive, og den har samme værdi som CURRVAL:
SQL> print :seqval
SEQVAL
----------
8141
SQL> select emp_seq.currval from dual
2 /
CURRVAL
----------
8141
SQL>
Dit næste spørgsmål er, "understøtter CodeIgniter RETURNING-systemet?" Jeg aner det ikke, men jeg formoder, at det ikke gør det. De fleste ikke-Oracle-frameworks gør det ikke.
Der er altid mulighed for at pakke INSERT-sætningen ind i en lagret procedure, men det er en arkitektonisk beslutning, som mange mennesker ikke kan lide.