3

从 MySQL 中的表中删除某些行后如何重新排列主键列值?

敌人的例子;包含 4 行数据的表,主键值为 1、2、3、4。删除第 2 行和第 3 行时,第 4 行的键值变为 2。

请帮我找到解决方案。

4

3 回答 3

6

为什么要这样做?您不需要重新排列您的密钥,因为它只是用于记录的数字和标识符。它没有实际意义——所以让 DBMS 处理它。这是一个非常常见的错误——试图扮演 DBMS 角色。

但是,我会针对常见情况回答您的问题。在 MySQL 中,您可以使用以下命令重新排列列:

update t cross join (select @cur:=0) as init set t.col=@cur:=@cur+1

- 但是,这不能与UNIQUE(所以主键)限制下的列一起使用,因为在更新期间您可能会得到重复的记录。您应该先取消限制,然后再执行此操作(并在更新后重新创建)。

于 2013-10-22T07:17:46.953 回答
0

一种方法是THIS ONE

除此之外,您可以简单地删除主要的表,然后再次创建它。这将完成这项工作

于 2013-10-22T07:13:53.643 回答
0

为什么要更改数据的主键?一般来说,这样做是个坏主意,尤其是当完整性约束进入游戏时。如果你需要做这样的事情,我会说你的数据库设计不好,你应该仔细看看这方面。

于 2013-10-22T07:16:48.970 回答