使用Oracle SQL插入数字ID递增的行(例如rownum)?

使用Oracle SQL插入数字ID递增的行(例如rownum)?,sql,oracle,Sql,Oracle,我想使用Oracle SQL将新行插入到表中,其中一个字段只需唯一,例如rownum值。但是,该声明不起作用: insert into MYTABLE ( ID_, INDEX_, TYPE_, SOMEVALUE_ ) values ( "FOOBAR", rownum, 1, 999 ); 这将导致一条错误消息: 00976. 00000 - "Specified pseudocolumn or operator not allowed here." *Cause: LEVEL,

我想使用Oracle SQL将新行插入到表中,其中一个字段只需唯一,例如rownum值。但是,该声明不起作用:

insert into MYTABLE ( ID_, INDEX_, TYPE_, SOMEVALUE_  ) values ( "FOOBAR", rownum, 1, 999 );
这将导致一条错误消息:

00976. 00000 -  "Specified pseudocolumn or operator not allowed here."
*Cause:    LEVEL, PRIOR, ROWNUM, CONNECT_BY_ROOT, CONNECT_BY_ISLEAF or
           CONNECT_BY_ISCYCLE was specified at an illegal location.

如果无法使用rownum,我愿意寻找一个有效的替代解决方案。

您需要在这里创建一个
序列

遵循
顺序
创建和使用文档

例如,您可以创建
序列
,如:

CREATE SEQUENCE mytable_sq
 START WITH     1
 INCREMENT BY   1
 NOCACHE
 NOCYCLE;
然后你可以这样做:

insert into MYTABLE ( ID_, INDEX_, TYPE_, SOMEVALUE_  ) values ( "FOOBAR", mytable_sq.nextval, 1, 999 );

这里需要创建一个
序列

遵循
顺序
创建和使用文档

例如,您可以创建
序列
,如:

CREATE SEQUENCE mytable_sq
 START WITH     1
 INCREMENT BY   1
 NOCACHE
 NOCYCLE;
然后你可以这样做:

insert into MYTABLE ( ID_, INDEX_, TYPE_, SOMEVALUE_  ) values ( "FOOBAR", mytable_sq.nextval, 1, 999 );

在insert into mytable(…)Values('Foobar',您的_sequence.nextval,…)中使用序列。
rownum
仅在运行
select
语句时可用。它没有存放在任何地方。正如kevinsky所说:如果您想要一个唯一的数字,请使用一个序列。如插入mytable(…)值('Foobar',您的_sequence.nextval,…)
rownum
仅在运行
select
语句时可用。它没有存放在任何地方。正如kevinsky所说:如果你想要一个唯一的数字,就使用一个序列