SQL-如何重用已删除的无符号字段值

SQL-如何重用已删除的无符号字段值,sql,phpmyadmin,Sql,Phpmyadmin,首先,我对SQL非常陌生,所以我很难解释我的问题是什么。如果我问的有任何问题,我会澄清的 我在使用phpmyadmin的SQL数据库中遇到问题。我有一个未签名的字段,当我将房间添加到房间表时,它会给它一个room\u id值1。当我添加房间时,这个值会逐渐增加。这是有道理的。但是如果我有两个房间(id 1,2),并且我删除了第2个房间,那么我添加了另一个房间,下一个房间id将是id 3。有没有办法确保它占用下一个可用插槽而不是不断增加?i、 e.如果我删除了房间2,那么创建的下一个房间的id是否

首先,我对SQL非常陌生,所以我很难解释我的问题是什么。如果我问的有任何问题,我会澄清的

我在使用phpmyadmin的SQL数据库中遇到问题。我有一个未签名的字段,当我将房间添加到房间表时,它会给它一个
room\u id
1
。当我添加房间时,这个值会逐渐增加。这是有道理的。但是如果我有两个房间
(id 1,2)
,并且我删除了第2个房间,那么我添加了另一个房间,下一个房间id将是id 3。有没有办法确保它占用下一个可用插槽而不是不断增加?i、 e.如果我删除了房间2,那么创建的下一个房间的id是否为2


我对SQL非常陌生,所以请握着我的手,引导我完成我需要做的事情,而不是给我一个过于复杂的答案…请

您的ID字段设置为自动递增。这就是它的工作原理,它将max number id存储在表中,然后将其递增并分配给下一个插入的行

想想看,假设你有下一行:第1行(1),第2行(2),第3行(3)。如果删除第2行,下一行索引将是4,因此将有如下内容:第1行(1)、第3行(3)、第4行(4)


如果要在id字段中输入自己的逻辑,应取消选中A_I选项,并在每次插入中输入所需的任意数字(,同时保持唯一)。

您的id字段设置为自动递增。这就是它的工作原理,它将max number id存储在表中,然后将其递增并分配给下一个插入的行

想想看,假设你有下一行:第1行(1),第2行(2),第3行(3)。如果删除第2行,下一行索引将是4,因此将有如下内容:第1行(1)、第3行(3)、第4行(4)


如果要在id字段中输入自己的逻辑,应取消选中A_I选项,并在每次插入中输入任意数字(,同时保持唯一)。

您的表有一个由数据库任意分配的主键。其目的是确保表中的每个记录都可以唯一标识。删除个别记录时造成的数字差距这一事实不值得关注,应该予以忽略

后续的
INSERT
s插入到表中不会重复使用那些已删除的主键值,也不应该重复使用它们

如果这里的问题是您正在使用该值确定表中的记录数,那么请使用以下查询代替该值:

SELECT COUNT(*) FROM [tablename]

您的表有一个由数据库任意分配的主键。其目的是确保表中的每个记录都可以唯一标识。删除个别记录时造成的数字差距这一事实不值得关注,应该予以忽略

后续的
INSERT
s插入到表中不会重复使用那些已删除的主键值,也不应该重复使用它们

如果这里的问题是您正在使用该值确定表中的记录数,那么请使用以下查询代替该值:

SELECT COUNT(*) FROM [tablename]

有没有办法确保它占用下一个可用插槽而不是不断增加?这在很大程度上是由于数据库的并发性,因此要正确地执行是相当复杂的。为什么需要这样做?因为我在编码方面和在SQL方面一样糟糕。简言之但是我将尝试更详细地解释给我一点时间思考我的问题是什么以及如何解释它。好的,基本上我是通过使用一个变量(比如room++)来迭代房间,然后使用它来做sql语句作为我的下一个房间。但是因为我有一个房间1,然后是一个房间20,所以它不起作用。我想我可能需要使用另一个for循环来迭代数组?是的,这解决了问题。有没有办法确保它占用下一个可用的插槽,而不是不断增加?这在很大程度上是由于数据库的并发性,因此要正确地执行是相当复杂的。为什么需要这样做?因为我在编码方面和在SQL方面一样糟糕。简言之但是我将尝试更详细地解释给我一点时间思考我的问题是什么以及如何解释它。好的,基本上我是通过使用一个变量(比如room++)来迭代房间,然后使用它来做sql语句作为我的下一个房间。但是因为我有一个房间1,然后是一个房间20,它不工作。我想我可能需要使用另一个for循环来迭代数组?是的,这解决了问题