2016-01-27 58 views
0

我想將使用Oracle SQL的新行插入表中,其中一個字段只需要是唯一的,例如,只是rownum的價值。但是這種說法不工作:使用Oracle SQL插入增加數字ID(例如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是不可能的。

+5

使用序列作爲INSERT INTO MYTABLE(...)VALUES( 'Foobar的', your_sequence.nextval,....) – kevinsky

+1

運行'select'語句時'rownum'只有**可用。它不存儲在任何地方。正如kevinsky所說:如果你想要一個唯一的數字,可以使用一個序列 –

回答

3

您需要的是創建一個SEQUENCE

按照SEQUENCE創建和使用文檔here

例如,您可以創建SEQUENCE,如:

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);