C# ID范围和递增
数据库中有一个C# ID范围和递增,c#,sql-server,C#,Sql Server,数据库中有一个PilotID字段,从1开始,可以上升到9999。现在他们想让我再增加两种飞行员类型。 一个id从10000开始,另一个从20000开始 他们都需要共享PilotID字段。我的问题是,一旦我创建了一个具有最高ID的pilot,当我尝试创建一个新的pilot时,它只想在数据库中增加最高ID。下面是一个例子。如有任何建议,将不胜感激 int newpilotID = 0; int pecID = 10000; int highSeaID = 20000; //checking fo
PilotID
字段,从1
开始,可以上升到9999
。现在他们想让我再增加两种飞行员类型。
一个id从10000
开始,另一个从20000
开始
他们都需要共享PilotID
字段。我的问题是,一旦我创建了一个具有最高ID的pilot,当我尝试创建一个新的pilot时,它只想在数据库中增加最高ID。下面是一个例子。如有任何建议,将不胜感激
int newpilotID = 0;
int pecID = 10000;
int highSeaID = 20000;
//checking for PEC provider
if (Session["Role"].ToString().Equals("Provider") && (Session["ProviderID"].ToString().Equals("25")))
{
sqlCN.Open();
qlCOM = new SqlCommand("select f_name from t_Provider where f_Active=1 and f_ProviderID = 25 order by f_name", sqlCN);
sqlDR = sqlCOM.ExecuteReader();
Employer.Items.Clear();
while (sqlDR.Read())
{
Employer.Items.Add(sqlDR.GetString(0));
}
sqlDR.Close();
Employer.Items[0].Selected = true;
sqlCOM = new SqlCommand("select f_PilotID from t_Pilot", sqlCN);
sqlDR = sqlCOM.ExecuteReader();
while (sqlDR.Read())
{
if (Convert.ToInt32(sqlDR.GetString(0)) > pecID)
{
pecID = Convert.ToInt32(sqlDR.GetString(0));
}
}
sqlDR.Close();
pecID++;
PilotID.Text = pecID.ToString();
简单地向数据库查询一个案例的当前最大值,然后将结果增加1,怎么样
select max(id) from mytable where id between 1 and 9999
这是针对MS SQL Server的吗?有什么只针对C#4.0的吗?是的,这是正确的。没什么特别的。我正在尝试找出如何为每个案例找到最大的数字,然后根据会话中的providerId从中递增到正确的类型。您的一般问题是如何创建一个在给定范围内的id?我认为在id中添加语义是个坏主意。假设第一个提供程序提供了10000多个导频?正常情况下,飞行员将获得Id 10000,但该范围已分配给另一个提供商。也许现在这不是问题,但如果该软件在生产中持续使用数年,它会真的咬你。最好在数据库中添加一个试点类型字段,并将ID保留为简单的自动递增谢谢你的回复!我认为您的想法会在@souplex起作用假设您自己控制创建唯一id值,而不使用自动递增值,我看不出有什么问题。Pleun的答案是对你的问题有一个更强有力的解决方案。如果这对你不起作用,我建议你探索这个解决方案。