|
|
1
2
你的想法应该奏效。第一种可能是我使用的方式。执行此操作时应注意的一些事项:
|
|
2
0
创建一个新表,其中包含旧的和新的pk值。在两列上放置唯一的约束,以确保到目前为止没有破坏任何内容。 禁用约束。 对所有表运行更新,将旧值修改为新值。 启用pk,然后启用fk。 |
|
|
3
0
很难说出“最佳”或“最合适”的方法是什么,因为您没有描述您在解决方案中要寻找的内容。例如,当您迁移到新的ID时,这些表是否需要可用于查询?它们需要同时修改吗?尽快完成迁移很重要吗?将用于迁移的空间最小化是否重要? 说了这句话,我希望1比你的其他想法更好,假设它们都符合你的要求。 任何涉及到更新子表的触发器的操作似乎都很容易出错,并且过于复杂,可能无法执行1。 假设新的ID永远不会与旧的ID冲突是否安全?否则,基于一次更新一个ID的解决方案将不得不担心冲突——这会很快变得混乱。
你考虑过使用吗
|
|
|
4
0
实际上,这取决于您的RDBMS。 使用Oracle,最简单的选择是使所有的外键约束“延迟”(检查提交),在单个事务中执行更新,然后提交。 |
|
|
Racine Pilote · Laravel回滚特定数据库 8 年前 |
|
|
Arti · Django rerun迁移操作 8 年前 |
|
|
Black-Prince · 用于迁移两个不同数据库上的两个表的脚本 8 年前 |
|
|
Tutu Kaeen · 在Laravel中回滚模块迁移? 8 年前 |
|
|
ProgLover · 如何修改迁移并在不丢失数据的情况下进行迁移? 8 年前 |
|
|
Askold Ilvento · 在Eigen中应用逆换位 8 年前 |