在SQLDeveloper软件中,有一个功能可以在脚本中运行语句,也可以在整个脚本中运行语句。
我的问题是,当我运行整个脚本时,我的SQL脚本工作正常,但当我尝试运行单个语句时,抛出一个ORA-00955:name已被现有对象使用的错误。
例如,我的脚本如下所示:
DROP TABLE "Movie" CASCADE CONSTRAINTS;
DROP TABLE "Critic" CASCADE CONSTRAINTS;
DROP TABLE "Review" CASCADE CONSTRAINTS;
CREATE TABLE "Critic" (
"cID" int NOT NULL, /* Since a review cannot have no critics*/
"CriticName" varchar(100),
"PhoneNumber" varchar(10),
PRIMARY KEY ("cID")
);
CREATE TABLE "Movie" (
"mID" int,
"Title" varchar(255),
"ReleaseDate" DATE,
"Rating" int,
"RunningTime" INTEGER, /*To store the duration of the film in minutes*/
"Director" varchar(100),
"Actor(s)" int,
PRIMARY KEY ("mID")
);
CREATE TABLE "Review" (
"rID" int,
"mID" int,
FOREIGN KEY ("mID") REFERENCES "Movie"("mID"),
"cID" int,
FOREIGN KEY ("cID") REFERENCES "Critic"("cID"),
"Rating" int,
PRIMARY KEY ("rID")
为什么这个脚本作为一个整体运行良好,但如果我尝试只运行一条语句,它就会失败?
作为参考,我所说的功能在GUI中如下所示:
根据@Gordon Linoff的解释,我找到了答案。
在创建表之前,必须运行drop table命令。由于runstatement命令只运行一条语句,因此从不调用drop命令,从而导致错误。
要解决此问题,只需突出显示删除命令和创建命令,然后单击“运行语句”,即可解决问题。