繁体   English   中英

在MySQL中重新排列主键

[英]Rearrange primary keys in mysql

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

敌人的例子; 一个具有4行数据且主键值为1,2,3,4的表。 删除第二行和第三行时,第四行的键值将更改为2。

请帮助我找到解决方案。

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

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

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

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

一种方法是THIS ONE

除此之外,您可以简单地删除主要表,然后再次创建它。 这样就可以了

为什么要更改数据的主键? 通常,这样做是个坏主意,尤其是当完整性约束进入游戏时。 如果您需要这样做,我会说您的数据库设计不佳,您应该在这方面进行仔细研究。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM