HSQLDB を使用するプロジェクトに 2 つのテーブルがあり、それらは と と呼ばStaff
れStaff2
ます。ここに書かれているように、 ID PRIMARY KEYを
Staff
持っています:
s.execute("CREATE TABLE Staff(Id varchar(10) PRIMARY KEY, FirstName varchar(30), LastName varchar(30), Department varchar(255))");.
Staff2
ここに書かれているように、 ofをId FOREIGN KEY
参照しています:PRIMARY KEY
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 サーバーを閉じて再起動しても、テーブルは閉じられませんでした。
また、最初からやり直す方法に関するアドバイスを使用することもできます。今回は、最初からテーブルを削除する前にキーを削除します。