如何修复Oracle11g中的“ ORA-01735:无效的ALTER TABLE选项”错误

时间:2019-01-29 19:16:19

标签: sql oracle oracle11g alter-table

我正在编码一个SQL脚本,但是,当我编译并尝试使用SQL * PLUS执行时,此节目在问题开始时提到了错误。我看到了其他相关问题,但找不到解决方法。

这用于Windows 10'计算机中的本地服务器,该服务器运行带有SQL * PLUS和XAMPP Server的Oracle 11g。我在另一台具有类似规格的计算机上尝试过,但具体细节除外。

ALTER TABLE ACTORES(
ADD CONSTRAINT pk_actores PRIMARY KEY (Codigo)
);
COMMIT;
ALTER TABLE PERSONAJES(
  ADD CONSTRAINT pk_personajes PRIMARY KEY (Codigo),
  ADD CONSTRAINT fk1_personajes FOREIGN KEY (CodigoActor) REFERENCES ACTORES (Codigo),
  ADD CONSTRAINT fk2_personajes FOREIGN KEY (CodigoSuperior) REFERENCES PERSONAJES (Codigo)
);
COMMIT;
ALTER TABLE NAVES(
  ADD CONSTRAINT pk_naves PRIMARY KEY (Codigo)
);
COMMIT;

1 个答案:

答案 0 :(得分:1)

太多括号不健康

SQL> create table actores (codigo number);

Table created.

SQL> alter table actores (add constraint pk_actores primary key (codigo));
alter table actores (add constraint pk_actores primary key (codigo))
                    *
ERROR at line 1:
ORA-01735: invalid ALTER TABLE option


SQL> alter table actores add constraint pk_actores primary key (codigo);

Table altered.

SQL>

另一个表格:

SQL> create table personajes (codigo number, codigoactor number, codigosuperior number);

Table created.

SQL> alter table personajes add constraint pk_personajes primary key (codigo);

Table altered.

SQL> alter table personajes add constraint fk1_personajes foreign key (codigoactor)
  2    references actores (codigo);

Table altered.

SQL> alter table personajes add constraint fk2_personajes foreign key (codigosuperior)
  2    references personajes (codigo);

Table altered.

SQL>

或者,在同一ALTER TABLE中有几个约束:

SQL> drop table personajes;

Table dropped.

SQL> create table personajes (codigo number, codigoactor number, codigosuperior number);

Table created.

SQL> alter table personajes add
  2    (constraint pk_personajes primary key (codigo),
  3     constraint fk1_personajes foreign key (codigoactor)
  4       references actores (codigo),
  5     constraint fk2_personajes foreign key (codigosuperior)
  6       references personajes (codigo)
  7    );

Table altered.

SQL>

对其余表/约束执行相同操作。

P.S。哦,是的-您不必COMMITALTER TABLE是DDL,隐式地提交所有更改。