Mysql 如何更改行删除时的自动递增主键值?
我有一个问题,每当我删除一行时,对应于该行的行ID就会被删除,但我不希望这样。我想要的是,如果删除了任何一行,那么该行之后的其他行应该向上移动一个(删除的行数)位置 例如: 假设有一个用户表(id和名称) 现在删除id=3的行,表应该如下所示Mysql 如何更改行删除时的自动递增主键值?,mysql,Mysql,我有一个问题,每当我删除一行时,对应于该行的行ID就会被删除,但我不希望这样。我想要的是,如果删除了任何一行,那么该行之后的其他行应该向上移动一个(删除的行数)位置 例如: 假设有一个用户表(id和名称) 现在删除id=3的行,表应该如下所示 id(auto incremented primary key) name 1 xyz 2
id(auto incremented primary key) name
1 xyz
2 aaa
3 mark
4 allen
有没有办法做到这一点?没有!别这样!
您的自动增量ID是一行的标识。其他表使用此ID引用特定行。如果更新ID,则必须更新引用此行的所有其他表,这在关系数据库中根本不是
此外,不需要这样做:您不会很快用完自动增量列(如果这样做,只需选择更大的数据类型)
autoincrement ID是一个纯粹的技术编号,您的应用程序用户永远不应该看到或使用它。如果要向用户显示标识符,请添加另一列 你完全弄错了方向。不应更改自动编号,因为这会中断任何其他引用表之间的链接
听起来,您需要的是行计数器,而不是主键。虽然通常不建议更改这些值,但确实存在需要更改这些值的情况。如果您有适当的外键关系设置来在更新时级联,那么您可以这样做。如果您需要100%,所有FK关系都会按预期定义 不要这样做。您将丢失父子表关系您是否想过引用此表主键列的其他表中的记录会发生什么情况?例如,对于另一个表中引用了4标记的记录,当它变为3标记时会发生什么?可能的重复
id(auto incremented primary key) name
1 xyz
2 aaa
3 mark
4 allen