尝试在Oracle11g中自动递增

尝试在Oracle11g中自动递增,oracle11g,primary-key,Oracle11g,Primary Key,我试图为一个表创建一个自动递增的主键,但我没有运气。这是在Oracle11g中,我严重缺少MySQL自动增量命令。PrimkeyID是我试图用作主键的列。这是一个多对多关系的相交表。无论如何,错误表明我在主键括号的开头缺少一个关键字。此外,我没有执行触发器所需的特权级别,这对于Oracle中的增量操作似乎很重要 create table SITE_JUNC ( primkeyID number, FKsuperpave varchar(30), FKcont_mix varchar(30), )

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

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)

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

然后,在insert语句中,使用seq_table.nextval(或使用触发器)。 如果您不喜欢此解决方案,可以使用GUID(我个人不喜欢):


从Oracle12c开始,你就有了标识栏。

可能是@a_horse_和_no_name的重复。是的,我一分钟前刚看过那篇文章,我没有能力做触发器。我是一名分析师,我没有这样的特权。那么你在Oracle 11上就不走运了,但是如果你能创建表,你通常也能创建触发器。当您尝试创建触发器时会发生什么情况?当我尝试在刚创建的表上创建触发器时,我会收到错误消息ORA-01031:权限不足。我只是执行了上述Renato Afonso上提到的Oracle自动递增帖子中所述的相同步骤,这是有意义的。谢谢您,我会给它一个快照。我会推荐该序列超过GUID
Create sequence seq_table;
create table SITE_JUNC
(primkey number RAW(16) DEFAULT SYS_GUID() PRIMARY KEY,
....)