gpt4 book ai didi

java - 如何通过 UCanAccess 创建一个具有对另一个表的两个外键引用的表?

转载 作者:行者123 更新时间:2023-11-30 06:16:07 27 4
gpt4 key购买 nike

直接在 MS-Access 中构建引用是没有问题的。使用 UCanAccess 执行此操作会导致“net.ucanaccess.jdbc.UcanaccessSQLException:...”。

Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
Connection connection = DriverManager.getConnection("jdbc:ucanaccess://e:/TestDB.accdb;memory=true");
Statement statement = connection.createStatement();
//
String tableToBeReferenced = "PersonsTable";
String tableWithTheReferences = "RelationShipsTable";

try {// Tidy up
statement.execute("DROP TABLE " + tableWithTheReferences);
} catch (Exception exeption) {}
try {// Tidy up
statement.execute("DROP TABLE " + tableToBeReferenced);
} catch (Exception exeption) {}

statement.execute("CREATE TABLE " + tableToBeReferenced + "(ID autoincrement NOT NULL PRIMARY KEY,"//
+ "Name VARCHAR(255)"//
+ ")");

statement.execute("CREATE TABLE " + tableWithTheReferences + "(ID LONG NOT NULL PRIMARY KEY,"//
+ "RelationShip VARCHAR(255) NOT NULL DEFAULT 'FRIENDS',"//
+ "Person1Id LONG NOT NULL,"//
+ "Person2Id LONG NOT NULL)");

// reference #1
statement.execute("ALTER TABLE " + tableWithTheReferences + //
" ADD CONSTRAINT FOREIGN_KEY_1 FOREIGN KEY (Person1Id) REFERENCES " //
+ tableToBeReferenced + "(ID) ON DELETE CASCADE");

// reference #2
statement.execute("ALTER TABLE " + tableWithTheReferences + //
" ADD CONSTRAINT FOREIGN_KEY_2 FOREIGN KEY (Person2Id) REFERENCES " //
+ tableToBeReferenced + "(ID) ON DELETE CASCADE");

如果我只创建第一个引用,它就可以工作。如果我只创建第二个引用,它就可以工作。

但是当我尝试构建两个引用时,它失败了。

最佳答案

我能够在 UCanAccess 4.0.3 下重现该问题。 HSQLDB 和 Jackcess 都没有在相同的两个表之间创建两个独立的 FK 关系的问题,因此看起来这可能是 UCanAccess 中的错误。我将向 UCanAccess 开发团队报告该问题,并用任何新闻更新此答案。

更新:

此问题的修复已实现,并将包含在 UCanAccess 4.0.4 版本中。

关于java - 如何通过 UCanAccess 创建一个具有对另一个表的两个外键引用的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49160150/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com