重新排列mysql中的主键

时间:2013-10-22 07:10:01

标签: mysql

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

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

请帮我找到解决方案。

3 个答案:

答案 0 :(得分:5)

为什么这样?您不需要重新排列您的密钥,因为它只是编号,记录的标识符。它没有实际含义 - 所以让DBMS处理它。这是一个非常常见的错误 - 试图承担DBMS角色。

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

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

- 但是,这不能与UNIQUE下的列一起使用(因此主键也是如此)限制,因为在更新期间您可能会获得重复记录。在执行此操作之前,您应首先删除限制(并在更新后再次创建)。

答案 1 :(得分:0)

一种方法是THIS ONE

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

答案 2 :(得分:0)

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