当前位置: 首页 > 面试题库 >

如何在MySQL中处理自动无提示ID列的碎片

颛孙正卿
2023-03-14
问题内容

我有一个带有auto_increment字段的表,有时行被删除,因此auto_increment留下了空白。有什么方法可以避免这种情况,或者至少没有避免如何编写SQL查询的方法:

  1. auto_increment值更改为最大值(当前值)+1
  2. 返回新auto_increment值?

我知道如何编写第 1 部分和第 2 部分,但可以将它们放在同一查询中吗?

如果不可能:

如何“选择”(返回)auto_increment值或auto_increment值+ 1?


问题答案:

重新编号会引起混乱。现有报告将引用记录99,但是如果系统重新编号,则可能会将记录重新编号为98,现在所有报告(和填充的UI)都是错误的。一旦分配了唯一的ID,它就必须保持固定。

除了简单的唯一编号之外,将ID字段用于其他任何事情都会有问题。对“无间隙”的要求与能够精简的要求完全不符。也许您可以将记录标记为已删除,而不是删除它们。那么,确实没有差距。假设您正在制作带编号的发票:您将拥有一个具有该编号的零值已取消发票,而不是删除它。



 类似资料:
  • 我的应用程序支持所有方向,除了肖像向上向下。在我的视图层次结构中,我有一个AVCaptureVideoPreviewLayer作为俯视图中的一个子层,即UIImageView。然后,在视图层次结构的下方是几个显示控件的覆盖视图。 覆盖视图可以在方向改变的情况下正常工作,但我不知道如何使用这个AVCaptureVideoPreviewLayer。我希望它的行为像照相机应用程序一样,这样preview

  • 我有一个片段,我想创建一个自定义列表视图,但当我发送参数到适配器,它给我的错误。 这是我的代码片段.. 这是我的Mainhome.java 我的错误是...

  • 问题内容: 如何在MySQL中获取下一个ID以将其插入表中 问题答案: 使用从您的SQL查询。 要么 您也可以使用PHP来获取它。

  • AWS DynamoDB触发器使我们能够捕获DynamoDB表中的所有更改。Lambda将每个Lambda函数分配给DynamoDB流的碎片。 我想在Lambda函数中检索碎片ID,以在某些数据处理任务中保持一致性,但我找不到获得它的方法。有人做到了吗?

  • 实现英文输入的自动提示功能。用户在UITextField中输入英文,根据输入的字母,在输入框旁边弹出一个列表视图,进行文字提示。 能够自动提示四级英语词汇。 [Code4App.com]

  • 我是AWS Kinesis的新手。我正在尝试使用KCL版本1(按照这里的亚马逊说明:https://docs.aws.amazon.com/streams/latest/dev/kinesis-record-processor-implementation-app-java.html#kcl-java-interface-original) 我想初始化一个新的KCL实例,但我不知道我的碎片ID是什