如果我从数据库中的表中删除一行如何重命名主键

时间:2011-12-06 13:54:11

标签: php mysql

所以我想从表中删除一行,例如

1

2

3

4

5

7

8

如何重命名表行主键,使它们等于

1

2

3

4

5

6

7

3 个答案:

答案 0 :(得分:4)

这个问题经常出现,但这是一个错误的问题。你不必关心id。它只是一个标识符。保持原状。

您可以使用您喜欢的编程语言或通过sql以编程方式添加渐进数字。

select *,@row:=@row+1 as progressive_number
from table, (select @row:=0) as t

答案 1 :(得分:2)

您不应重命名主键。它们的功能是在数据库中提供唯一的内部标识符。即使它有一个像1,1,10,43,88这样的序列..它没关系,因为它应该没有任何化妆品含义。

答案 2 :(得分:-1)

您可以按主键删除该行...

delete from my_table where id = 4

然后减少所有后续密钥:

update my_table set id = id - 1 where id > 4;

假设所有引用主键的外键都设置为on update cascade,则将保持内部参照完整性。如果您使用数字ID构建网址,那么您的网址现在都已损坏。

但你绝对不应该这样做。这不是数据库的工作方式。这不是一个美学的例子,对你的数据这样做是完全错误。这实际上没有充分理由这样做,并且有很多理由不这样做。