2017-02-13 5 views
0

Ich versuche, einen automatisch inkrementierenden Primärschlüssel für eine Tabelle zu schaffen, aber ich habe kein Glück. Dies ist in Oracle 11g und ich vermisse ernsthaft den MySQL Auto-Inkrement-Befehl. PrimkeyID ist die Spalte, die ich als Primärschlüssel verwenden möchte. Dies ist eine Schnittstellentabelle für eine Viele-zu-Viele-Beziehung. Auf jeden Fall sagt der Fehler, dass mir ein Schlüsselwort nur am Anfang der Primärschlüssel-Klammer fehlt. Außerdem habe ich nicht die Privilegstufe, die benötigt wird, um Trigger auszulösen, die für die Inkrementierung in Oracle wichtig zu sein scheinen.Versuchen, in Oracle automatisch zu inkrementieren 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

Mögliche Duplikate von [Auto Increment für Oracle] (http://StackOverflow.com/questions/9733085/auto-increment-for-oracle) –

+0

@a_horse_with_no_name ja Ich habe gerade diesen Beitrag vor einer Minute angeschaut und ich don '' Ich habe die Fähigkeit, Auslöser zu machen. Ich bin ein Analytiker und ich habe nicht die Ebene von Privilegien. –

+0

Dann haben Sie kein Glück mit Oracle 11, aber wenn Sie Tabellen erstellen können, können Sie normalerweise auch Trigger erstellen. Was passiert, wenn Sie versuchen, den Auslöser zu erstellen? –

Antwort

1

Erstens sind Sequenzen Objekte, die von der Tabelle getrennt sind. Sie müssen zuerst die Sequenz erstellen und dann die Tabelle (nicht unbedingt in dieser Reihenfolge).

Create sequence seq_table; 

Dann wird bei dem Einsatz-Anweisung verwenden, um die seq_table.nextval (oder durch Triggern verwenden). Wenn Sie diese Lösung nicht gefällt, können Sie GUID verwenden (Ich persönlich mag es nicht):

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

Ab Oracle 12c, haben Sie Identitätsspalten.

+0

An Renato Afonso, das macht Sinn, danke krank gebe es eine Chance –

+0

Ich würde die Sequenz über die GUID empfehlen – BobC