首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改使用复合主键的旧数据库表

修改使用复合主键的旧数据库表
EN

Database Administration用户
提问于 2014-03-12 20:52:34
回答 1查看 592关注 0票数 0

假设您有一个Server数据库,该数据库由一个遗留应用程序使用,该应用程序有多个具有复合主键列的表(因此,也包括复合外键列)。与复合主键列不同,其他更现代的应用程序希望使用单个主键列,但由于遗留应用程序无法更改,这些复合主键列也不能。

我的初步解决办法包括以下几点:

  • 使用复合主键列向每个表添加一个新的标识列,并向这些标识列添加唯一的非聚集索引。
  • 使用复合外键列向每个表中添加新的可空整数列,并将外键约束添加到相应的新标识列和这些整数列的非聚集索引中。
  • 将INSERT/UPDATE触发器添加到这些表中,以便在插入新行或更新现有行时更新这些新的整数列。

鉴于上述情况,我的解决方案是否是使用现有复合主键列修改这些Server数据库表的有效方法,从而允许引入单个唯一列以允许其他应用程序使用?是否有任何存储或性能问题需要考虑?

EN

回答 1

Database Administration用户

发布于 2014-03-14 12:25:22

向表中添加新列可能会破坏遗留应用程序,因为DML可能期望每个表中有一定数量的特定类型的列。

对于这类问题,没有任何优雅的解决方案。您可以为新应用程序创建新的表,并使用触发器复制数据,但这会造成不必要的复杂性,当然也会造成重复。您可以在新表中创建新键,并使用视图将数据作为一个表呈现给新应用程序,但随后只能使用从新应用程序插入和更新的过程。

从长远来看,你可能会更好地扔掉遗留应用程序。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/60805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档