如果我有一个包含以下信息的数据库,我该如何设置我的下一个INSERT
查询以便填写 ID?(因此在本例中为 5。)
基本上,一旦达到 24,它将继续按顺序插入(例如:30、31、32)
你没有。无论如何都不是自动递增的整数。
您可以将该列更改为不是自动递增的整数,但是您需要在执行每个插入之前确定下一个 ID,这会使您的所有INSERT
查询变得不必要地复杂并且代码更难以维护。更不用说如果多个线程尝试插入并且查找下一个 ID 和插入记录的操作不是完全原子的,则会引入一个重要的故障点。
为什么你甚至需要这个?数据库生成的主键整数没有理由像这样连续。它的目的是独一无二的,只要它服务于这个目的,它就会起作用。没有必要“填补之前删除的记录留下的漏洞”。
您可以向数据库添加不同的列,并在该列上插入记录时执行查找下一个连续数字的逻辑。但是你仍然会遇到前面提到的竞争条件和不必要的复杂性问题。
将您的文件名更改为比 id 更有意义的名称。
我认为files/uploads/20130515_170349.wv
(对于第一行)之类的东西很有意义(假设您每秒没有超过一个文件。
这还有一个优点,即按字母顺序排列文件名是按时间顺序排列,从而更容易查看新旧文件。
你可以给它 Id 字段和值
插入表(I'd等)值(5等);
但是我不认为你可以动态地做到这一点。如果我是自动增量,那么无论以前的元组是否已被删除等,它都会继续 oncrementinf。