2017-02-13 72 views
0

我想为表创建一个自动递增的主键,但我没有运气。这是在Oracle 11g中,我严重缺少MySQL自动增量命令。 PrimkeyID是我试图用作主键的列。这是一个多对多关系的交叉表。无论如何,这个错误说我错过了一个关键词,只是在主键括号的开头。此外,我没有触发器所需的特权级别,这对于在Oracle中递增似乎很重要。试图在Oracle 11g中自动递增

create table SITE_JUNC 
(
primkeyID number, 
FKsuperpave varchar(30), 
FKcont_mix varchar(30), 
) 
; 
alter table site_junc 
add constraint primary key(create sequence primkeyID incement by 1), 

add constraint FKsuperpave foreign key(mix_id_superpave) 
references SMGR_CONT_MIX(ContMix), 

add constraint FKcont_mix foreign key(mix_id_cont_mix) 
references SUPERPAVE(SuperMix) 
+1

[Auto Increment for Oracle]的可能重复(http://stackoverflow.com/questions/9733085/auto-increment-for-oracle) –

+0

@a_horse_with_no_name是的,我只是在一分钟前看过那篇文章,没有能力做触发器。我是一名分析师,而且我没有特权级别。 –

+0

然后你对Oracle 11不太好运,但是如果你可以创建表,你通常也可以创建触发器。当您尝试创建触发器时会发生什么? –

回答

1

首先,序列是与表格分离的对象。 你必须先创建序列,然后表格(不一定按顺序)。

Create sequence seq_table; 

然后,在插入语句中,使用seq_table.nextval(或通过使用触发器)。 如果你不喜欢这种解决方案,您可以使用GUID(我个人不喜欢它):

create table SITE_JUNC 
(primkey number RAW(16) DEFAULT SYS_GUID() PRIMARY KEY, 
....) 

启动Oracle 12c中,你有标识列。

+0

在Renato Afonso,这很有道理谢谢你生病了吧 –

+0

我会推荐序列通过GUID – BobC