插入时键入数据集ConstraintException

时间:2010-08-17 16:14:41

标签: .net sql-server hierarchical-data strongly-typed-dataset tableadapter

基本上我有一个包含分层数据的表。

所以我有一个id列和一个汇总列,它指向每个孩子父母的id列。

使用TableAdapter上的GetData()从数据库加载此表,然后使用以下命令设置表的主键autoincrementseed:

  

SELECT IDENT_CURRENT('TableName')+ 1

在层次结构中创建新子项,然后在同一个TableAdapter上调用Update()。

大部分时间这都很完美,但偶尔我得到ContraintException列'id'被限制为唯一的问题,而且只有在添加新行时才会出现。

通常,我只是将autoincrementseed和autoincrementstep设置为-1,更新id列后将从数据库中获取正确的值,但由于汇总列依赖于主键值,因此无效。

我无法将每个新行都应用于实时,因为用户在将所有更改应用到数据库之前必须对其进行审核。

有什么想法吗?

编辑:我应该提一下,其他任何来源都没有其他更改,因此这里没有并发问题。

另一个编辑:今天我在调用update方法之前检查了表中的值,并注意到问题与主键上没有正确排序的新行有关。

所以例如行变为960,961,963,962,当插入962时,我得到了962已经存在的错误。如果更新按顺序插入行,则不会发生这种情况。

为什么表不按主键索引行?

1 个答案:

答案 0 :(得分:0)

使用SELECT IDENT_CURRENT('TableName')+ 1会杀死你,除非你只有一个用户