假设您有两个表处于一对一关系;即子表的主键也是将其链接到父表的外键。还假定父项的主键是标识字段(插入记录时由数据库分配的单调递增整数)。在SQL中复制与标识字段的1对1关系
假设您需要将这两个表中的记录复制到第二对相同的表中 - 父项的主键是标识,将子项链接到父项的外键也是子项的主键。
我应该如何将一组表中的记录复制到另一组表中?
我目前有三个解决方案,但我想知道是否还有其他人更好。
选项1:在目的地 父表暂时禁用 身份属性。复制来自 父表的记录,然后复制子表 保持 主键的相同值。跨越你的手指, 没有冲突( 源表的主键已在目标表中存在 )。
选项2:暂时列添加到 目的地父表保持 “旧”(源)主键。从父表中复制 记录, 允许数据库分配新的主键 ,但将旧主键保存在临时列中。 从子表, 通过的 旧的主键加入源子表的 目的地父表复制记录,利用加盟 插入记录到 目的地子表与新 主键。从目标父 表中删除临时 列。
选项3:复制顺序 记录由记录,首先从父 到父,然后儿童对儿童,使用 DB-提供的功能的“最后 插入记录的身份”,以确保 该链接保持不变。
在这些选项中,我认为选项2是我的偏好。有没有人更喜欢其他两种选择之一,如果是这样,为什么?有没有人有不同的“更好”的解决方案?
不幸的是,虽然大多数表具有自然的组合业务密钥,但有三个表没有。 :( – 2011-03-08 23:12:38