使用Oracle SQL插入数字ID递增的行(例如rownum)?
我想使用Oracle SQL将新行插入到表中,其中一个字段只需唯一,例如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,
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所说:如果你想要一个唯一的数字,就使用一个序列