我有一个包含多个表的数据库。一个表叫做#34;用户"。数据的一个例子是
0 John Black
1 Joe Bloggs
2 Jane Doe
如果我在行where id = 1
上执行删除,则数据变为:
0 John Black
2 Jane Doe
我将编写什么SQL来更改进一步的记录以减少ID,以便数据变为:
0 John Black
1 Jane Doe
注意:还有其他表格包含相关数据,例如员工详细信息可能通过ID列链接了地址和电话号码,但我认为这也会改变,因为ON UPDATE
是设置为"级联"
答案 0 :(得分:0)
通常,出于完整性原因,我们永远不会更改数据库中的ID,并且数据库中存在间隙也没有问题。这很正常!
您不应该根据行号找到记录。如果由于存在差距而遇到问题,则需要在应用程序中重新考虑您的设计。
但如果是出于显示原因,我建议使用Row_Number
答案 1 :(得分:0)
如果真的想要你可以:
根据您使用的数据库,您可能需要在事务开始时删除外键约束并在结束时重新启用它们。
但是你可能在这里解决了错误的问题。这似乎是一个不好的主意,而不是任何真正的需要。
答案 2 :(得分:0)
不要改变你的身份。这就像银行每次有人离开银行时更改您的帐号一样。对于出问题,这里有太多的空间。
您尝试执行的操作的替代方法是使用sort_order列并自行修复。每次有删除都有一个触发器使用基于UserID ASC的MS SQL函数RANK函数的mysql版本更新列。
这将为您提供相同的理想输出,但不会破坏任何表格链接。
此致
马库斯