2017-02-13 9 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

[Oracleの自動インクリメント]の複製の可能性があります(http://stackoverflow.com/questions/9733085/auto-increment-for-oracle) –

+0

@a_horse_with_no_nameはい1分前にその投稿を見ましたが、トリガーを行う能力があります。私はアナリストであり、私には特権レベルはありません。 –

+0

Oracle 11では不運になりますが、テーブルを作成できる場合は、通常はトリガーも作成できます。トリガーを作成しようとするとどうなりますか? –

答えて

1

最初に、シーケンスはテーブルから分離されたオブジェクトです。 最初にシーケンスを作成し、次にテーブルを作成する必要があります(必ずしもその順序である必要はありません)。

次に、insert文で、seq_table.nextval(またはトリガを使用)を使用します。あなたはこのソリューションを好きではない 場合は、(私は個人的に好きではない)GUIDを使用することができます。

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

以降のOracle 12cと、あなたはID列を持っています。

+0

Renato Afonsoで感謝してくれてありがとうございました –

+0

GUID – BobC

関連する問題