0

如果我有一个包含以下信息的数据库,我该如何设置我的下一个INSERT查询以便填写 ID?(因此在本例中为 5。)

在此处输入图像描述

基本上,一旦达到 24,它将继续按顺序插入(例如:30、31、32)

4

3 回答 3

2

你没有。无论如何都不是自动递增的整数。

您可以将该列更改为不是自动递增的整数,但是您需要在执行每个插入之前确定下一个 ID,这会使您的所有INSERT查询变得不必要地复杂并且代码更难以维护。更不用说如果多个线程尝试插入并且查找下一个 ID 和插入记录的操作不是完全原子的,则会引入一个重要的故障点。

为什么你甚至需要这个?数据库生成的主键整数没有理由像这样连续。它的目的是独一无二的,只要它服务于这个目的,它就会起作用。没有必要“填补之前删除的记录留下的漏洞”。

可以向数据库添加不同的列,并在该列上插入记录时执行查找下一个连续数字的逻辑。但是你仍然会遇到前面提到的竞争条件和不必要的复杂性问题。

于 2013-07-22T00:50:21.767 回答
1

将您的文件名更改为比 id 更有意义的名称。

我认为files/uploads/20130515_170349.wv(对于第一行)之类的东西很有意义(假设您每秒没有超过一个文件。

这还有一个优点,即按字母顺序排列文件名是按时间顺序排列,从而更容易查看新旧文件。

于 2013-07-22T00:55:47.007 回答
0

你可以给它 Id 字段和值

插入表(I'd等)值(5等);

但是我不认为你可以动态地做到这一点。如果我是自动增量,那么无论以前的元组是否已被删除等,它都会继续 oncrementinf。

于 2013-07-22T00:51:32.830 回答