gpt4 book ai didi

c# - 删除一行时更新其他行的主键列

转载 作者:行者123 更新时间:2023-11-29 08:48:06 31 4
gpt4 key购买 nike

在我的数据库中,有一个表,其中主要包含问题及其选项和答案。第一个字段是 ~questionid~ 并且是主键,如预期的那样(我现在已禁用 AUTOINCRMENT)。我的客户可能想删除一些问题。这给我留下了两个选择:

  1. 所有后续问题都会向上移动,以便不存在空行。此选项意味着这些问题的问题 ID 将会更改

  2. 保持原样,这样就会有空行。如果有新条目,它应该填充第一个空行。

我该如何实现其中的任何一个?事实上,我更喜欢第二种,但如果有人有不同的意见,欢迎。
我正在使用 MySQL 数据库和 C#。

最佳答案

您正在使用数据库,因此不必担心这些问题。

SQL 表中没有“空”行的概念(好吧,可以说如果所有列都为 NULL,则该行为空,但这与这里无关)。 SQL 表中的行本身并不是有序的。

行本身存储在页面上,页面可能有也可能没有额外空间来容纳更多行。当您想到空行时,您可能会想到这一点。

当删除一行时,数据不会重新排列。页面上只有一些额外的空间,以防稍后添加新行。如果您在两个现有行之间添加一个带有主键的新行,并且页面已满,则数据库会将页面“拆分”为两部分。另外两个页面有额外的空间。

不过,重要的一点不是它是如何工作的。您在应用程序中使用关系数据库的原因之一是您可以添加和删除行,而不必担心它们的实际物理存储。

如果您的数据库包含大量事务(删除和插入),那么您可能需要定期重新排列数据,使其更适合页面。不过,通常只有当此类交易量很大时才需要进行此类优化。

不过有一件事。您的应用程序不应依赖于顺序的主键,因此它可以正确处理删除。

关于c# - 删除一行时更新其他行的主键列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12031029/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com