sql >> Databáze >  >> RDS >> Oracle

Problém Oracle SEQUENCE.Currval v CodeIgniter

Existuje způsob, jak získat hodnotu automaticky přiřazenou ke sloupci:je to klauzule RETURNING.

Takže tady je moje sekvence:

SQL> select emp_seq.currval from dual
  2  /

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

SQL>

Použiji jej v příkazu 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>

Vrátil jsem EMPNO do proměnné SQL*Plus, kterou mohu vytisknout, a má stejnou hodnotu jako CURRVAL:

SQL> print :seqval

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

SQL> select emp_seq.currval from dual
  2  /

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

SQL>

Vaše další otázka je, "podporuje CodeIgniter sysntaxi RETURNING?" Nemám tušení, ale mám podezření, že ne. Většina rámců jiných než Oracle ne.

Vždy existuje možnost zabalit příkaz INSERT do uložené procedury, ale to je architektonické rozhodnutí, které se mnoha lidem nelíbí.



  1. Jak spustit testy v django pomocí databáze s daty?

  2. Chování výjimky Oracle INSERT INTO SELECT(...) DUP_VAL_ON_INDEX

  3. Vytvořte databázi MySQL pomocí souboru .SQL

  4. Jak mohu vytvořit dočasnou tabulku v mariadb nebo mysql?