用于vb.net winforms的SQL中的重复身份代码

时间:2016-02-25 16:55:45

标签: sql-server vb.net winforms

美好的一天,

我不太确定这种情况会发生的原因。

我有一个大型代码,我在其中插入一些值到某些SQL表。该程序在4-5个独立的机器上工作,这些机器访问另一个服务器中保存的相同SQL数据库。

Try : codfact = CInt(Me.CFTableAdapter.codigoQuery) + 1 : Catch ex As Exception : codfact = 1 : End Try 

在那里,我获得了表的新id并将其保存在codfact中。 CFTableAdapter.codigoQuery =它是一个获取我表格的MAX(id)的SELECT。

然后我做插入:

While Not exit4
  Try
     Me.CFTableAdapter.InsertQuery(codfact, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 1, -1, -1, Me.codcom, 0, False, -1, -1, -1, -1, 0, selprop)
     exit4 = True
  Catch ex As Exception
     If ex.Message.Contains("PRIMARY KEY") Then
        Try : codfact = CInt(Me.CF.codigoQuery) + 1 : Catch : codfact = 1 : End Try
     Else
        MessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End
     End If
  End Try
End While

这就是代码。 会发生的是,有时两个程序都使用相同的codfact,它应该是SQL表中的唯一标识ID。

当我尝试重现此错误时,我总是得到" PRIMARY KEY"错误,它得到了下一个使用的codfact(正确的方法)。

该codfact在其他表中用作Foreing Key。这样我得到一个单独的codfact线而不是2或3。

0 个答案:

没有答案