【问题标题】:Typed Dataset ConstraintException on insert插入时键入的数据集约束异常
【发布时间】:2010-08-17 16:14:41
【问题描述】:

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

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

使用 TableAdapter 上的 GetData() 从数据库加载该表,然后使用以下方法设置表的主键自动增量:

SELECT IDENT_CURRENT('TableName') + 1

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

大多数情况下这工作得很好,但偶尔我会得到 ContraintException 列“id”被限制为唯一问题,而且它似乎只在添加新行时发​​生。

通常,我只需将 autoincrementseed 和 autoincrementstep 设置为 -1 并在更新 id 列后从数据库中获取正确的值,但是因为汇总列取决于主键值,所以这将不起作用。

我也无法实时应用每个新行,因为所有更改作为一个整体必须由用户审核,然后才能应用到数据库。

有什么想法吗?

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 是的,此应用程序仅供单个用户使用。更改来自外部来源,每月使用此软件处理一次并加载到数据库中。
    猜你喜欢
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    • 2010-09-07
    • 2018-03-31
    • 1970-01-01
    • 2021-12-09
    相关资源
    最近更新 更多