美好的一天,
我不太确定这种情况会发生的原因。
我有一个大型代码,我在其中插入一些值到某些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。