我找到了这个mysql代码,当我将它传递给oracle sql developer时,alter table命令在我试图执行它时显示错误。
这是我的表:
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命令:
ALTER TABLE article
ADD PRIMARY KEY (code),
ADD KEY code (code),
ADD KEY code_2 (code);
这是错误消息:
Rapport d'erreur -
ORA-01735:选项ALTER TABLE non 的Valide
01735. 00000 - “ALTER TABLE选项无效”
*原因:
*操作:
答案 0 :(得分: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
声明为主键,没有理由在列上创建单独的索引。
答案 1 :(得分:1)
这样的CREATE TABLE在Oracle中不起作用(至少11gR2)。因此,我稍微重新安排了一下(请自己逐列比较,看看差异)。可以在列的末尾创建主键约束 inline (正如我所做的那样)。列表(第2个例子)或单独使用ALTER TABLE(第3个例子)。
请注意,您不必为主键列指定NOT NULL; Oracle将自行执行它。
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>