Plsql 什么是甲骨文';s与SQL Server的对应项';s@@IDENTITY?

Plsql 什么是甲骨文';s与SQL Server的对应项';s@@IDENTITY?,plsql,sql-server-2008-r2,oracle11g,Plsql,Sql Server 2008 R2,Oracle11g,Oracle与SQL Server的@@IDENTITY对应的是什么?如果Oracle没有IDENTITY列,您通常会为每个表创建一个序列,并使用该序列填充主键。假设您已经这样做了,您可以获取序列的currval,以获取当前会话最近生成的序列值 SQL> create table foo( 2 col1 number primary key, 3 col2 varchar2(10) 4 ); Table created. SQL> create sequ

Oracle与SQL Server的
@@IDENTITY
对应的是什么?

如果Oracle没有IDENTITY列,您通常会为每个表创建一个序列,并使用该序列填充主键。假设您已经这样做了,您可以获取序列的
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

因为Oracle实际上没有
IDENTITY
columns的概念,所以它没有相应的概念。在Oracle中,您通常使用
序列
来获取连续的、唯一的数字,以便在表中使用。@marc_-s-哦,好的,谢谢……答案帮助我解决了我的要求,作为等效的解决方案。