我在一个使用 HSQLDB 的项目中有 2 个表,它们被称为Staff
和Staff2
.
Staff
有Id PRIMARY KEY,写在这里:
s.execute("CREATE TABLE Staff(Id varchar(10) PRIMARY KEY, FirstName varchar(30), LastName varchar(30), Department varchar(255))");.
Staff2
已Id FOREIGN KEY
引用PRIMARY KEY
of Staff
,如此处所写:
s.execute("CREATE TABLE Staff2(Id varchar(10), TeachingCourse varchar(30), UserName varchar(255), FOREIGN KEY(Id) REFERENCES Staff(Id))");.
现在,似乎因为我一开始没有删除这些键,所以我不能删除表。当我执行程序时,它显示以下错误:
抛出异常:
java.sql.SQLException: Table is referenced by a constraint in table SYS_REF_SYS_FK_272_275 table: STAFF2 in statement [drop table STAFF]
当我尝试在删除表之前独立删除键时,我遇到了其他错误:
当我在做时:
s.execute("ALTER TABLE Staff DROP PRIMARY KEY");
结果是:
抛出异常:
java.sql.SQLException: Attempt to drop a foreign key index: SYS_IDX_46 in statement [ALTER TABLE
工作人员 DROP PRIMARY KEY]
当我在做的时候:
s.execute("ALTER TABLE Staff2 DROP FOREIGN KEY Id");
我得到:
抛出异常:
java.sql.SQLException: Column not found: FOREIGN in statement [ALTER TABLE Staff2 DROP FOREIGN]
有可能我Add CONSTRAINT
在途中使用了某处并没有关闭它,但DROP CONSTRAINT
效果不佳(产生抛出异常:
java.sql.SQLException: Constraint not found ID in table: STAFF in statement [ALTER TABLE Staff DROP CONSTRAINT Id]),
而且我无法理解如何找到约束,以及这些约束的确切含义以及是否应该找到它们。
现在我被卡住了,无法继续,因为在删除键之前无法删除表。
关闭 HSQLDB 服务器并重新启动它并没有关闭表。
我还可以使用有关如何重新开始的建议,这次在第一次删除表之前删除键。