“违反主键约束‘PK_Vehicle_Transactions’。无法在对象‘dbo.Vehicle_Transactions’中插入重复的键”

2024-01-03

我设计了 Webservice api,每次我通过 webservice 推送数据时,这就是我得到的回报 MOV =“违反主键约束'PK_Vehicle_Transactions'。无法在对象'dbo.Vehicle_Transactions'中插入重复的键。该语句已终止。”就像 api 不知道在哪里停止以及在哪里继续!请参阅下面我的源代码,谢谢

Public Sub uploadVehicle_Transaction()
        Try
            'do for sync indacator for proper upload in action
            Dim VT As New DataTable
            VT = New Statn_Sync.DataSetTableAdapters.Vehicle_TransactionsTableAdapter().GetData()

        For Each dr As DataRow In VT.Rows
            Dim iCount As Integer = 0
            Dim MOV As String = comT.insertVehicle_Transaction(Convert.ToInt64(dr("TransactionID")), _
                                                               Convert.ToDateTime(dr("Transaction_date")), _
                                                               Convert.ToInt32(dr("Bank")), _
                                                               Convert.ToString(dr("Teller_number")), _
                                                               Convert.ToInt32(dr("Amount")), _
                                                               Convert.ToString(dr("Generated_by")), _
                                                               Convert.ToString(dr("Station")), _
                                                               Convert.ToString(dr("Customer_name")), _
                                                               Convert.ToInt32(dr("Transaction_category")), _
                                                               Convert.ToString(dr("Deposit_slip")), _
                                                               Convert.ToInt32(dr("Sync")), _
                                                               Convert.ToDecimal(dr("Penalty")), _
                                                               Convert.ToDecimal(dr("OGSG")), _
                                                               Convert.ToDecimal(dr("CMR")), _
                                                               Convert.ToDecimal(dr("Goshen")), _
                                                               Convert.ToDecimal(dr("Insurance")), _
                                                               Convert.ToDecimal(dr("OCost")), _
                                                               Convert.ToDecimal(dr("OGSG_Renewal")), _
                                                               Convert.ToDecimal(dr("De_pulse")))

            iCount += 1
            Label1.Text = " Auto Sync: " & iCount
            'update record
            Dim pls As String = dr("TransactionID").ToString

            If (pls Is MOV) Then
                AddToLog((Convert.ToString(": transferred") & MOV.ToString() & Text) + Environment.NewLine)
                vta.UpdateTrans(dr("TransactionID"))
            End If
        Next

    Catch ex As Exception
        AddToLog(ex.Message.ToString)
    End Try
End Sub

例外已经说明了这一点:Violation of PRIMARY KEY constraint 'PK_Vehicle_Transactions'。该表已包含具有主键的行(TransactionID)给定。 A首要的关键 http://www.w3schools.com/sql/sql_primarykey.asp在整张桌子上都是独一无二的。

您的问题有多种解决方案:

1)计算最新的TransactionID

VT = New Statn_Sync.DataSetTableAdapters.Vehicle_TransactionsTableAdapter().GetData()

//Use query to select Max value of TransactionID (something like)
Dim maxPK as Long =  'SELECT MAX(TransactionID) FROM dbo.Vehicle_Transactions'  

//Increase the MaxPK with 1 to avoid duplicate key
 maxPK = maxPK + 1 

  For Each dr As DataRow In VT.Rows
   Dim iCount As Integer = 0

   //Use our variable in the insert
   Dim MOV As String = comT.insertVehicle_Transaction((maxPK  + iCount), _
                       Convert.ToDateTime(dr("Transaction_date")), _

2) Use Auto Increment on TransactionID of dbo.Vehicle_Transactions

为此我参考了以下帖子:自动递增 https://stackoverflow.com/questions/10991894/auto-increment-primary-key-in-sql-server-management-studio-2012.这篇文章是为MSSQL 2012的管理工作室制作的。但相同的逻辑适用于早期版本(2008,2005)

其他解决方案可以在 StackOverflow 中找到

如果我能提供任何进一步的帮助,请随时给我签名!

Note:如果之前的数据对您没有用处,您可以随时clear the table在使用查询插入之前:DELETE FROM dbo.Vehicle_Transactions此查询从表中删除所有行。尽管你必须警惕任何Forgein Keys因为它们可能会导致数据丢失/异常。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“违反主键约束‘PK_Vehicle_Transactions’。无法在对象‘dbo.Vehicle_Transactions’中插入重复的键” 的相关文章

随机推荐