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

时间:2015-02-06 08:19:42

标签: c# .net sqlite auto-increment

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

但是,如果从表中删除一行,该表将自动递增,就好像该行根本没有被删除一样。结果是数字序列中存在差距。这通常不是一个问题,但您可能想要重置自动增量字段。

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();
        }
    }

2 个答案:

答案 0 :(得分:0)

You can try using the SQL Query

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

答案 1 :(得分:0)

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

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