我遇到一个问题,每当我删除一行时,与该行对应的行ID都会被删除,但我不希望这样。我想要的是如果删除任何行,那么该行之后的其他行应该移位一行(删除的行数)。
示例:
假设有一个用户表(id和名称)
id(auto incremented primary key) name
1 xyz
2 aaa
3 ray
4 mark
5 allen
现在删除id=3
行,表格应该是
id(auto incremented primary key) name
1 xyz
2 aaa
3 mark
4 allen
有没有办法实现这个目标?
答案 0 :(得分:18)
您的自动增量ID是一行的 IDENTITY 。其他表使用此ID来引用某一行。如果更新ID,则必须更新引用此行的所有其他表,不是关系数据库的所有点。
此外,从来没有必要这样做:你不会快速耗尽自动增量列(如果你这样做,只需选择一个更大的数据类型)。
自动增量ID是纯技术数字,您的应用程序用户永远不应该看到或使用它。如果要向用户显示标识符,请添加另一列!
答案 1 :(得分:3)
你完全得到了错误的结局。不应更改自动编号,因为这会破坏任何其他引用表之间的链接。
根据它的声音,你想要的是一个行计数器,而不是主键。
答案 2 :(得分:0)
虽然通常不建议更改这些值,但确实存在您可能需要更改它们的情况。如果你有相应的外键关系设置在UPDATE级联,那么你可以这样做。当然,您需要100%所有FK关系都按预期定义。