【问题标题】:How to fix "ORA-01735: Invalid ALTER TABLE option" error in Oracle11g如何修复 Oracle11g 中的“ORA-01735: Invalid ALTER TABLE option”错误
【发布时间】:2019-06-23 00:02:16
【问题描述】:

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

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

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;

【问题讨论】:

  • 哪个 ALTER 给你错误?当前的表定义是什么?

标签: sql oracle oracle11g alter-table


【解决方案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>

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

附:哦,是的——你不必COMMITALTER TABLE 是 DDL 并隐式提交任何更改。

【讨论】:

  • 谢谢!!我尝试了这个选项,然后我解释了最终结果;)
  • 没关系!非常感谢小脚
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-14
  • 1970-01-01
  • 1970-01-01
  • 2020-08-04
  • 2011-02-24
  • 2013-06-11
  • 1970-01-01
相关资源
最近更新 更多