Car*_*lis 7 sql-server database-design identity-column
我想每个人偶尔遇到这个问题:你有两个表有自动编号需要合并的主键.使用自动编号主键有利于说应用程序生成的密钥有很多很好的理由,但与其他表合并必然是最大的缺点之一.
出现的一些问题是重叠的id和不同步的外键.我想听听你解决这个问题的方法.我总是遇到问题,所以如果有人有某种通用的解决方案,我很好奇.
- 编辑 -
在回答建议使用guid或其他非数字键的答案时,有些情况事先提醒使用自动编号键(后来你后悔),或者你正在接管其他人的项目,或者你得到一些你必须使用的遗留数据库.所以我真的在找一个你无法控制数据库设计的解决方案.
嗯,我对我刚刚在 AlexKuznetsov 的答案中发表评论的想法很感兴趣,所以我将对此做出完整的回答。
假设表被命名为 table1 和 table2,其中 id1 和 id2 作为自动编号主键。它们将被合并到带有 id3(非自动编号主键)的 table3 中。
为什么不:
UPDATE table SET id1 = id1 * 2,对于引用 table2 的 FK 字段,执行UPDATE table SET id2 = (id2) * 2 + 1INSERT INTO table3 SELECT id1 * 2 AS id3, ... FROM table1 UNION ALL SELECT id2 * 2 + 1 AS id3 FROM table2它甚至可以与 3 个或更多表配合使用,只需使用更高的乘数即可。
| 归档时间: |
|
| 查看次数: |
2869 次 |
| 最近记录: |