4个回答
展开全部
说你在一中插入了重复键(Primary key)是主键约束,一般情况下出现以下几种情况:
物理表中插入了重复的键。
查看数据库,待插入表确实存在了已经存在的主键,所以不能够重复插入。
程序实体集中插入了重复键。
这个比较难查一些,一般是在程序中使用了dataset/datatable或实体集(linq to sql,EF技术)而插入时是先手入到实体集,由实体集向数据库更新数据,实现持久。在相应的datatable中插入了重复的键也是不可行的!
在同一事务中存在的两次插入。
写程序时不小心,在同一事务中两次插入,自然会引起主键约束,而错误后进行了回滚,导致一个也插入不了。在非事务中,则会插入一条,二次插入时报错。
其实在同一事务中的两次插入,可能是插入到物理表,也可能是在程序实体集中插入,总之不管哪种情况都是出现相同的结果。
物理表中插入了重复的键。
查看数据库,待插入表确实存在了已经存在的主键,所以不能够重复插入。
程序实体集中插入了重复键。
这个比较难查一些,一般是在程序中使用了dataset/datatable或实体集(linq to sql,EF技术)而插入时是先手入到实体集,由实体集向数据库更新数据,实现持久。在相应的datatable中插入了重复的键也是不可行的!
在同一事务中存在的两次插入。
写程序时不小心,在同一事务中两次插入,自然会引起主键约束,而错误后进行了回滚,导致一个也插入不了。在非事务中,则会插入一条,二次插入时报错。
其实在同一事务中的两次插入,可能是插入到物理表,也可能是在程序实体集中插入,总之不管哪种情况都是出现相同的结果。
展开全部
1.打开dbms查看数据表的数据,再次确保数据主键无重复
2.考虑是不是存过或者是T-sql语句复杂执行过慢,你的连续的点击操作导致重复提交
3.或许你一直在dbms查看数据界面,把表重新执行一下查看最新数据显示
这个异常既然抛出,数据库绝对有当前键的存在。
2.考虑是不是存过或者是T-sql语句复杂执行过慢,你的连续的点击操作导致重复提交
3.或许你一直在dbms查看数据界面,把表重新执行一下查看最新数据显示
这个异常既然抛出,数据库绝对有当前键的存在。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
仔细检查一下,以前我也遇到过这种情况,蛋疼了好久,最后发现语句末尾多了一句代码,导致主键被插入了两次,逐句排查一下,机器是不会说谎的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
留联系看!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询