表由表 SYS_REF_SYS_FK_272_275 表中的约束引用:语句 [drop table STAFF] 中的 STAFF2

Posted

技术标签:

【中文标题】表由表 SYS_REF_SYS_FK_272_275 表中的约束引用:语句 [drop table STAFF] 中的 STAFF2【英文标题】:Table is referenced by a constraint in table SYS_REF_SYS_FK_272_275 table: STAFF2 in statement [drop table STAFF] 【发布时间】:2014-12-27 12:41:52 【问题描述】:

我在一个使用 HSQLDB 的项目中有 2 个表,它们被称为 StaffStaff2Staff 具有 Id 主键,如下所示:

s.execute("CREATE TABLE Staff(Id varchar(10) PRIMARY KEY, FirstName varchar(30), LastName varchar(30), Department varchar(255))");.   

Staff2Id FOREIGN KEY 引用 PRIMARY KEYStaff,如此处所述:

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 服务器并重新启动它并没有关闭表。 我还可以使用有关如何重新开始的建议,这次在第一次删除表之前删除键。

【问题讨论】:

【参考方案1】:

您可以删除表格,但必须以相反的顺序进行。 STAFF2 依赖于 STAFF,因此您不能先删除 STAFF。您不必单独删除约束。只需执行以下两个命令:

DROP TABLE STAFF2;
DROP TABLE STAFF;

【讨论】:

【参考方案2】:

在 HSQLDB 中,即使存在引用其 PRIMARY KEY 或 UNIQUE 约束的 FOREIGN KEY 约束,您也可以删除任何表。只需在 DROP TABLE 语句的末尾使用 CASCADE 关键字。任何此类 FROEIGN KEY 约束也将被删除。

DROP TABLE STAFF CASCADE

rtruszk给出的解决方案是一个很好的解决方案,因为当数据库很大并且表被CACHED时,执行时间会更短。

【讨论】:

以上是关于表由表 SYS_REF_SYS_FK_272_275 表中的约束引用:语句 [drop table STAFF] 中的 STAFF2的主要内容,如果未能解决你的问题,请参考以下文章

hibernate__由表逆向创建Domain对象和对象关系映射文件

text scratch_272

自考新教材-p272_3

自考新教材-p272_2

UOJ#272. 清华集训2016石家庄的工人阶级队伍比较坚强

《安富莱嵌入式周报》第272期:2022.06.27--2022.07.03