Có một cách để nhận giá trị tự động được gán cho một cột:đó là mệnh đề RETURNING.
Vì vậy, đây là trình tự của tôi:
SQL> select emp_seq.currval from dual
2 /
CURRVAL
----------
8140
SQL>
Tôi sẽ sử dụng nó trong câu lệnh 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>
Tôi đã trả lại EMPNO thành một biến SQL * Plus mà tôi có thể in và nó có cùng giá trị với CURRVAL:
SQL> print :seqval
SEQVAL
----------
8141
SQL> select emp_seq.currval from dual
2 /
CURRVAL
----------
8141
SQL>
Câu hỏi tiếp theo của bạn là "CodeIgniter có hỗ trợ RETURNING sysntax không?" Tôi không biết, nhưng tôi nghi ngờ là không. Hầu hết các khuôn khổ không phải của Oracle đều không.
Luôn có tùy chọn để gói câu lệnh INSERT trong một thủ tục được lưu trữ, nhưng đó là một quyết định kiến trúc mà nhiều người không thích.