删除一些行后重新排列自动增量列值

Rearrange the autoincrement column value after deleting some rows

table 上的 ID 列等列将自动递增的情况。这只是意味着下一个插入 table 的 ID 将比前一个多一个,因此所有 ID 都是唯一的。

但是,如果您从 table 中删除一行,table 将自动递增,就好像该行根本没有被删除一样。结果是数字序列中出现间隙。这通常不是什么大问题,但您可能需要重置自动增量字段。

PatientNo 是主键,这是我到目前为止尝试过的代码

    private void txtincr()
    {
        int a;
        if (textPatientNo.Text == "")
        {
            if (con.State == 0)
            {
                con.Open();
            }
            string Query= "select PatientNo from PatientRegistration";
            SQLiteDataAdapter DataAdapter = new SQLiteDataAdapter(Query,con);
            DataSet PatientDataSet = new DataSet();
            DataAdapter.Fill(PatientDataSet);
            if (PatientDataSet.Tables[0].Rows.Count != 0)
            {
                a = PatientDataSet.Tables[0].Rows.Count;
                a = a + 1;
                textPatientNo.Text = Convert.ToString(a);
                textPatientName.Focus();
            }
            else
            {
                textPatientNo.Text = "1";
                textPatientName.Focus();
            }
            con.Close();
        }
    }
You can try using the SQL Query

    DBCC CHECKIDENT('TABLENAME',RESEED,initialvalue);

当您将该列声明为 INTEGER PRIMARY KEY 时,您无需执行任何操作,因为数据库会自动使用 table 中最大值之后的下一个值。

当您将该列声明为 INTEGER PRIMARY KEY AUTOINCREMENT 时,当前计数器存储在 sqlite_sequence table 中。您可以简单地 modify it by updating that table.