当前位置:  开发笔记 > 数据库 > 正文

在SQL Server中重置标识列

如何解决《在SQLServer中重置标识列》经验,为你挑选了3个好方法。

我正在创建一个存储联系人的SQL数据库.我希望能够删除联系人,并且每个联系人的正确ID对于我连接到它的软件至关重要.让我们说我有联系詹姆斯,他是第一个.他的身份证是0.我加上玛丽,她的身份证是1.如果我删除詹姆斯,玛丽的身份证如何设置为0而不是1?它必须重置,因为她现在是第一个.换句话说,当有人被删除时,如何重置数据库中的所有ID?谢谢



1> JoshBerke..:

这在很多方面都是一个坏主意.我正在辩论是否应该告诉你如何做到这一点.一旦设置了行的标识,就永远不应该有理由改变它的标识.

如果您有可能使用错误的字段作为PK标识符.我在这里假设您正在谈论您的PK字段,这也是一个标识列.

请记住,如果您创建链接到联系人表的任何表,并且您开始更改您的ID,则还需要更新所有这些表.这将变得昂贵......



2> E.J. Brennan..:

一旦你在数据库中拥有超过一小部分记录,这将变得非常缓慢.标识列不适合你,你需要做一些自定义的tsql来改变所有数字 - 但是一个非常糟糕的主意,imo.

如果您需要跟踪添加的订单,为什么不使用日期/时间戳.

你需要重新思考你的设计.



3> MarkusQ..:

这不是ID如何工作,而不是它们应该如何工作.ID永远不会改变,或者所有链接的信息都指向错误的行.

相反,为什么不添加您控制的"External_ID"列?或者在查询中动态编号(使用计算列?)

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有