2017-12-30 36 views
-3

このmysqlコードが見つかりました。過去のoracle sql開発者には、alter tableコマンドを実行するとエラーが表示されます。
これが私のテーブルです:
oracle - Alterテーブルが動作しません

CREATE TABLE article (
    code varchar(20) NOT NULL, 
    designation varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, 
    num_serie int(50) NOT NULL, 
    num_reference int(50) NOT NULL, 
    num_inventaire int(50) NOT NULL, 
    tva double NOT NULL, 
    famille varchar(50) NOT NULL, 
    sous_famille varchar(50) NOT NULL 
) ; 

と、これはalter tableコマンドである:

ラポールドールのerreur -
ORA-:

ALTER TABLE article 
    ADD PRIMARY KEY (code), 
    ADD KEY code (code), 
    ADD KEY code_2 (code); 

これはエラーメッセージです01735:オプションALTER TABLE非 valide
01735. 00000 - "無効なALTER TAB LEオプション」
*原因:
処置:

+2

なぜ同じ列の3つのキー????? – scaisEdge

+0

@scaisEdge最後の2行を削除すると、これで問題は解決されますか? –

+0

試してみてください...あなたはエラーメッセージを表示していないので、難しいです。asnwer – scaisEdge

答えて

1

このようなCREATE TABLEは、Oracle(少なくとも11gR2)では動作しません。したがって、私はそれを少し並べ替えました(違いを見るために、あなた自身で列を比較してください)。主キー制約は、インライン(私がやったように)、列のリストの最後(2番目の例)、または別々にALTER TABLE(3番目の例)を使って作成できます。

主キー列にNOT NULLを指定する必要はありません。オラクルはそれ自体を実施します。

SQL> CREATE TABLE article (
    2 code   varchar2(20) constraint pk_art primary key, 
    3 designation varchar2(100) NOT NULL, 
    4 num_serie  int NOT NULL, 
    5 num_reference int NOT NULL, 
    6 num_inventaire int NOT NULL, 
    7 tva   number NOT NULL, 
    8 famille  varchar2(50) NOT NULL, 
    9 sous_famille varchar2(50) NOT NULL 
10 ); 

Table created. 

SQL> drop table article; 

Table dropped. 

SQL> CREATE TABLE article (
    2 code   varchar2(20), 
    3 designation varchar2(100) NOT NULL, 
    4 num_serie  int NOT NULL, 
    5 num_reference int NOT NULL, 
    6 num_inventaire int NOT NULL, 
    7 tva   number NOT NULL, 
    8 famille  varchar2(50) NOT NULL, 
    9 sous_famille varchar2(50) NOT NULL, 
10 -- 
11 constraint pk_art primary key (code) 
12 ); 

Table created. 

SQL> drop table article; 

Table dropped. 

SQL> CREATE TABLE article (
    2 code   varchar2(20), 
    3 designation varchar2(100) NOT NULL, 
    4 num_serie  int NOT NULL, 
    5 num_reference int NOT NULL, 
    6 num_inventaire int NOT NULL, 
    7 tva   number NOT NULL, 
    8 famille  varchar2(50) NOT NULL, 
    9 sous_famille varchar2(50) NOT NULL 
10 ); 

Table created. 

SQL> alter table article add constraint pk_art primary key (code); 

Table altered. 

SQL> 
1

は、OracleとMySQLの構文を使用しているように見えます。私がお勧めします:

CREATE TABLE articles (
    code varchar2(20) NOT NULL PRIMARY KEY, 
    designation nvarchar2(100) NOT NULL, 
    num_serie number NOT NULL, 
    num_reference number NOT NULL, 
    num_inventaire number NOT NULL, 
    tva number NOT NULL, 
    famille varchar2(50) NOT NULL, 
    sous_famille varchar2(50) NOT NULL 
) ; 

主キーとして宣言codeでは、列に別のインデックスを作成する理由はありません。

関連する問題