SQL 中的自动递增 ID

Auto Increment ID in SQL

我想知道如何让我的 SQL 数据库 table 提供一个从 0 开始的 ID,并在每次添加新 ID 时检查是否有旧 ID 可用。

例子: 我添加了 10 个项目,然后几乎删除了所有项目,并保留了 ID = 5 的项目。 添加新项目后,它获得 id 11 而不是 0。

注意:我正在使用 Laravel API 编辑我的数据库。

SQL AUTO INCREMENT 最大可递增列值加 1 .

要填充一个空闲的整数槽,您需要手动检查它,但这有点违背 auto-incrementing 的目的。

无论如何,这是检查第一个免费 ID 值的方法:

function getUnusedId($ids_array)
{
  $max_id = max($used_ids); // can be 25 for example

  // [1:(id|1), 2:(id|2), 3:(id|3), 4:(id|5)] =>> ID 4 is missing
  for($i = 1; $i <= $max_id; $i++){
    if($used_ids[$i] > $i){
      return $i;
    }
  }
  return $max_id + 1; // You can echo that all IDs are used.
}

// The IDs must be ordered for this solution
$used_ids = Model::orderBy('id')->pluck('id')->toArray();

$free_id = getUnusedId($used_ids);