Sql 我如何将旧的ID密钥前进到新的数据库结构中?
鉴于我正在从事的一个项目,我们有一个旧的数据库结构,我们正在将数据从中迁移到一个新的数据库结构中,我们需要保留一些表的旧键,以便与一些现有的应用程序功能向后兼容 目前,我们正在考虑两种方法来满足这一需求:Sql 我如何将旧的ID密钥前进到新的数据库结构中?,sql,database,etl,database-migration,Sql,Database,Etl,Database Migration,鉴于我正在从事的一个项目,我们有一个旧的数据库结构,我们正在将数据从中迁移到一个新的数据库结构中,我们需要保留一些表的旧键,以便与一些现有的应用程序功能向后兼容 目前,我们正在考虑两种方法来满足这一需求: 为每个表创建一个额外的可为null的字段,并将旧键插入该新字段 创建包含新旧键映射的配套表 注意:新数据不会生成旧的ID密钥,因此在方法#1中,随着时间的推移,最终可空字段将包含新记录的空值 哪种方法更适合于更干净的数据库设计和长期的数据管理 您认为这两种方法都有问题吗?如果有,有什么问题
- 哪种方法更适合于更干净的数据库设计和长期的数据管理
- 您认为这两种方法都有问题吗?如果有,有什么问题
- 有没有一种方法我还没有想到
- 您提到sql,但它是sql Server吗
如果是SQL Server,请查看。这允许您显式插入自动增量列的值,而不是该列处于保护模式
但是,我相信如果在insert语句中显式地包含PK及其值,它将尊重这一点,并将原始密钥保存在您希望保留的原始列中,而不必为了向后兼容而强制另一列。根据您确切的向后可比性要求,我将使用您的#1(无双关语)或者使用
#3
:使用旧键创建不可为空的列,并在新系统中除了它们自己的列之外放置新ID。