|
|
1
10
迁移的关键是要做几件事: 首先,在没有当前备份的情况下,不要做任何事情。 第二,如果密钥将要更改,则至少需要临时将新旧密钥存储在新结构中(如果密钥字段向用户公开,则为永久性存储,因为用户可能会通过它进行搜索以获取旧记录)。 接下来,您需要彻底了解与子表的关系。如果更改键字段,则所有相关表也必须更改。这就是存储新旧钥匙的方便之处。如果您忘记更改其中任何一个,数据将不再正确,并且将毫无用处。所以这是关键的一步。 挑选一些特别复杂数据的测试用例,确保为每个相关表包含一个或多个测试用例。将现有值存储在工作表中。 要开始迁移,请使用“从旧表中选择”命令插入到新表中。根据记录的数量,您可能希望通过批量循环(一次不能循环一条记录)来提高性能。如果新密钥是一个标识,只需将旧密钥的值放入其字段中,并让数据库创建新密钥。 然后对相关表执行相同的操作。然后使用表中的旧键值更新外键字段,如下所示:
通过运行测试用例并将数据与迁移前存储的数据进行比较来测试迁移。彻底测试迁移数据至关重要,否则您无法确保数据与旧结构一致。移徙是一项非常复杂的行动;花点时间,有条不紊、彻底地去做是值得的。 |
|
|
2
5
最简单的方法可能是在MV6.Posts上为oldId添加一列,然后将旧表中的所有记录插入到新表中。最后,使用以下内容更新新表中与oldId匹配的旧表:
|
|
|
3
3
我知道你能做的最好的就是 output clause . 假设您有SQL2005或2008。
它仍然需要第二次传递来更新原始表;然而,它可能会帮助您简化逻辑。是否需要更新源表?您可以将新id存储在第三个交叉引用表中。 |
|
|
4
2
呵呵。我记得在迁移中这样做过。
在一次插入中执行此操作速度更快;在单独的步骤中执行这一操作意味着您的插入不依赖于顺序,并且可以在必要时重新执行。
实际上,如果外键定义正确,可以使用systables/information模式生成insert语句。 |
|
|
5
2
人工
但是
自动地
,在上创建触发器
你的扳机可能看起来像,
|
|
|
6
1
另外,不能用一条sql语句更新两个不同的表 但是,您可以使用触发器来实现您想要做的事情。 |
|
|
7
1
在MV6.Post.OldMV5Id中创建一列 选择来自MV5.Post 然后更新MV5.Post.MV6ID |
|
|
Johnny T · 基于当前值的SQL合并表[重复] 1 年前 |
|
John D · 需要为NULL或NOT NULL的WHERE子句 1 年前 |
|
ojek · 如何对SQL结果进行分组和编号? 1 年前 |
|
|
senek · 如何在PL/SQL中将选择结果(列)放入数组中 1 年前 |
|
|
Sax · 规范化Google表格(第一步) 1 年前 |
|
|
Jatin · 检索卷计数的动态sql抛出错误语法错误[关闭] 1 年前 |
|
|
Andrus · 如何在sql中查找第二个匹配项 1 年前 |