如何修复 Oracle11g 中的 "ORA-01735: Invalid ALTER TABLE option" 错误
How to fix "ORA-01735: Invalid ALTER TABLE option" error in Oracle11g
我正在编写一个 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;
太多括号不健康。
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>
另一个table:
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>
对 tables/constraints 的其余部分执行相同的操作。
P.S。哦,是的 - 你不必 COMMIT
; ALTER TABLE
是 DDL 并隐式提交任何更改。
我正在编写一个 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;
太多括号不健康。
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>
另一个table:
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>
对 tables/constraints 的其余部分执行相同的操作。
P.S。哦,是的 - 你不必 COMMIT
; ALTER TABLE
是 DDL 并隐式提交任何更改。