sql >> Databasteknik >  >> RDS >> Oracle

Oracle SEQUENCE.Currval problem i CodeIgniter

Det finns ett sätt att få värdet automatiskt tilldelat en kolumn:det är RETURNING-satsen.

Så här är min sekvens:

SQL> select emp_seq.currval from dual
  2  /

   CURRVAL
----------
      8140

SQL>

Jag ska använda det i en INSERT-sats:

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>

Jag returnerade EMPNO till en SQL*Plus-variabel som jag kan skriva ut, och den har samma värde som CURRVAL:

SQL> print :seqval

    SEQVAL
----------
      8141

SQL> select emp_seq.currval from dual
  2  /

   CURRVAL
----------
      8141

SQL>

Din nästa fråga är "stödjer CodeIgniter RETURNING-systemet?" Jag har ingen aning, men jag misstänker att det inte gör det. De flesta ramverk som inte kommer från Oracle gör det inte.

Det finns alltid möjlighet att slå in INSERT-satsen i en lagrad procedur, men det är ett arkitektoniskt beslut som många ogillar.



  1. Lat laddning från databasen när användaren rullar ner sidan (liknar Twitter och Facebook)

  2. Varför behöver vi GLOB-satsen i SQLite?

  3. ProgrammingError:syntaxfel vid eller nära när en fråga körs i python med psycopg2

  4. Hur byter man ut strängen med en annan sträng och behåller fallet i php och mysql?