删除一些行后重新排列自动增量列值
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.
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.