如何修复我的数据库表上的 Identity int ?

发布于 2024-07-21 13:29:44 字数 315 浏览 4 评论 0原文

大约一周前,一些数据被导入到数据库表中。 简单表:

Id INT PK NOT NULL IDENTITY Name VARCHAR(20)

现在,我今天注意到第一个 id 从 0 开始。问孩子,他在测试期间重新播种它。 所以第一个条目是零。 是一场意外。

我不确定如何最好地更新该值。 我怎样才能把所有的东西都推高一个数字? 让我痛苦的是还有一些 FK 依赖性。 如果我有级联更新,是否应该修复依赖项?

另外,我应该从上到下更新每个数字(但是我这样做吗??)。 从最大的数字开始,然后+1。 然后下去。

A week or so ago some data got imported into a db table. Simple table:

Id INT PK NOT NULL IDENTITY
Name VARCHAR(20)

Now, I noticed today that the first id starts at 0. Asking the kid, he was reseeding it during his testing. So the first entry was a zero. Was an accident.

I'm not sure how to best update the value. How can I push everything up one number? What pains me is that there's also some FK dependencies. If I have Cascade Update, should that fix the dependencies?

Also, should I update each number (however I do that??) from the top down .. eg. from the highest number, then +1. Then go down.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

离去的眼神 2024-07-28 13:29:44

首先,你为什么有压力? ID=0 是完全有效的,尽管有点不寻常。 (注意零NOT NULL

如果你真的想摆脱0:

  • 添加一个虚拟记录,
  • 记下它的ID,
  • 如果有外键指向记录0,将它们更新到虚拟记录。
  • 删除该记录。 (使内部 ID 计数器前进)。
  • 只需将 ID 0 更改为该值即可。

First of all, why are you stressing? ID=0 is complete valid, if a bit unusual. (Note that Zero Is NOT NULL)

If you really want to get rid of the 0:

  • add a dummy record,
  • note it's ID,
  • If there are foreign keys pointing to Record 0, update them to the dummy record.
  • delete that record. (to advance the internal ID counter).
  • Just change ID 0 to that value.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文