主键为自增量列,当最后记录删除时,前端自动产生的值与数据库中的不一值
主键值在数据库端是包含所删除的键值一直垒加的,而前端却是不含删除的值
例:现主键值 ID=98,删除最后两条记录,ID=96,这时在C#前端新增一条记录,前端自动获取的ID为97
而保存到数据库却是ID=99
如果我是一对多的关系表,由于是在前端新增保存后主表ID=99而子表ID=97这样就无法关联
现在的问题是自增量列在前端新增时如何跟数据保持一值,包含已删除的键值而不是最大值加1
ID=99而非97此问题捆我已久望高人指点
主键值在数据库端是包含所删除的键值一直垒加的,而前端却是不含删除的值
例:现主键值 ID=98,删除最后两条记录,ID=96,这时在C#前端新增一条记录,前端自动获取的ID为97
而保存到数据库却是ID=99
如果我是一对多的关系表,由于是在前端新增保存后主表ID=99而子表ID=97这样就无法关联
现在的问题是自增量列在前端新增时如何跟数据保持一值,包含已删除的键值而不是最大值加1
ID=99而非97此问题捆我已久望高人指点
解决方案 »
- Windows 服务 Onshutdown()方法
- 寻求本地查找的解决办法
- #标题党#[JavaScript]我做了一个类似于标签页的东西,但是有问题,内详。
- ¥¥¥¥ 仅需提供思路或解决方案~~~~巨分相送 ¥¥¥¥
- 能不能提供进存销的数据库的源代码啊??
- 拜托各位大虾!!!我有三个水晶报表的问题,请进来解决一下,老板催命!!!
- 想让Enternet开机后自动拨号上网,请大家给个思路,谢谢!
- 如何用foreach語句自動遍歷類中定義的所有成員
- 如何实现带*,?的匹配问题,可以具体点吗?
- 如何得到文件相对应的图标或图标句柄(急用,谢谢各位大侠!!)
- 正则表达式 提取字符串
- HTML里面的Select标签设置默认值
所以你往自增长列插入值后,要调用select @@IDENTITY来返回你插入的自增长值,然后更新C#前台。
级联更新我试过N次,新增时总报外键约束错误
6楼的可行但我想VS应该有更简单的办法
既然自动增长的,不通过数据库?你前端的ID是怎么自动获取的???这是最基本的啊。 即使不删除,多用户的话,像你这样做肯定也得出错。前端不能自动获取ID!!!! 切忌。 通过Select Max(ID) from table获取,然后更新前端ID如果是多用户的话,sql="insert into.... + "\r\n" + "select max() from table";
dbcc checkident(表名,reseed,0)
删除记录 主键从1开始
2。你是关联表 删除一个表的内容 不报错?
每一列的ID都应从数据库里查出来,自动增长的本应就是这样
你删除掉的那个Id已经被分配出去了,不能用了,不能在外面用下面的列填补的。
如果你想在外面顺显示不空缺的话,自己做个在外面做个没用的列,别和数据库里的ID扯上关系
ID基本上都是固定的,不是变着玩的!
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand())
{
try
{
PrepareCommand(cmd, connection, null, SQLString, cmdParms);
object obj = cmd.ExecuteScalar();
cmd.Parameters.Clear();
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
{
return null;
}
else
{
return obj;
}
}
catch (System.Data.SqlClient.SqlException e)
{
throw new Exception(e.Message);
}
}
}
}
及时获取添加数据的ID才是正确的做法 注意时间的处理。