0

SQL Server に対応する Oracle は何@@IDENTITYですか?

4

1 に答える 1

2

Oracle には ID 列がないため、通常はテーブルごとにシーケンスを作成し、そのシーケンスを使用して主キーを設定します。それが完了していると仮定するとcurrval、シーケンスの を取得して、現在のセッションで最後に生成されたシーケンス値を取得できます。

SQL> create table foo(
  2    col1 number primary key,
  3    col2 varchar2(10)
  4  );

Table created.

SQL> create sequence foo_seq;

Sequence created.

SQL> ed
Wrote file afiedt.buf

  1  create or replace trigger foo_trg
  2    before insert on foo
  3    for each row
  4  begin
  5    :new.col1 := foo_seq.nextval;
  6* end;
SQL> /

Trigger created.

SQL> insert into foo( col2 )
  2    values( 'foo' );

1 row created.

SQL> insert into foo( col2 )
  2    values( 'bar' );

1 row created.

SQL> select foo_seq.currval
  2    from dual;

   CURRVAL
----------
         2
于 2013-04-03T08:09:56.120 に答える