gpt4 book ai didi

java - 创建和填充表的顺序

转载 作者:搜寻专家 更新时间:2023-10-30 23:38:42 24 4
gpt4 key购买 nike

我正在做一个应该在删除后恢复数据库的程序,但只是一部分——只有用户想要的表,不关心其他的。我有两个数组列表。

  1. 我需要生成的所有表 - 用户想要的表,以及其他与此表相关的表(所有图表)

  2. 这个表之间的所有关系问题是创建和填充表的顺序以保持数据一致性。

现在,我的算法是:

  1. 生成没有任何关系(如果有)的“免费”表

  2. 仅使用主键(如果有)生成此表

  3. 也尝试使用 ForeignKey 生成表。

如何检查我是否可以在具有外键的表中生成数据?我需要知道使用外键生成表的顺序。如何有效地做到这一点?我正在用 Java 编写。

最佳答案

有两个简单的解决方案:

  • 按您想要的任何顺序创建没有外键的表,然后使用 alter table 添加外键-事后声明。

  • 以任何顺序遍历您的表列表并创建您现在可以创建的所有表,因为它们的引用表已经存在(您必须在列表中将它们标记为已创建,并且您有第二个列表要检查所需的关系)。重复该循环,直到您创建了所有表(或者直到您在运行中没有创建任何表,而不是您在列表中缺少所需的表)。你也可以用它来模拟它:如果你运行这个循环(不创建你的表,只是在你的列表中标记它),你可以检查你的用户是否已经选择了所有需要的表(或者根据你的用户标记所有需要的表他的选择)。

如果你也想插入数据:

  • 在使用第一种方法更改表之前添加数据
  • 创建表时添加数据
  • 按照与第二种方法相同的顺序添加数据
  • 使用set @@foreign_key_checks = 0; <insert all your data in any order>; set @@foreign_key_checks = 1; .这将允许您以任何顺序插入数据,即使引用数据尚不存在。遗憾的是,当您重新启用它时不会进行最终检查(例如,如果您遗漏了一些数据),因此请谨慎使用。

关于java - 创建和填充表的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37962861/

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