“Verletzung der PRIMARY KEY-Einschränkung 'PK_Vehicle_Transactions'. Kann nicht legen Sie doppelten Schlüssel im Objekt 'dbo.Vehicle_Transactions"
Dort die Webservice-api, die ich entwerfe, Jedes mal, wenn ich push-Daten überqueren Sie die webservice-dies ist, was ich im Gegenzug erhalten
MOV = "Verletzung der PRIMARY KEY-Einschränkung 'PK_Vehicle_Transactions'. Kann nicht legen Sie doppelten Schlüssel im Objekt 'dbo.Vehicle_Transactions'. Die Anweisung wurde beendet." ist wie die api nicht wissen, wo es aufhörte und wo weiter! bitte sehen mein Quellcode unten Dank
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ausnahme sagt es bereits:
Violation of PRIMARY KEY constraint 'PK_Vehicle_Transactions'
. Die Tabelle enthält bereits eine Zeile mit dem Primärschlüssel (TransactionID
) gegeben. Ein Primary Key ist einzigartig in der gesamten Tabelle.Gibt es mehrere Lösungen für dein problem:
1) Berechnen Sie die neuesten
TransactionID
2) Verwenden
Auto Increment
aufTransactionID
vondbo.Vehicle_Transactions
Für diese Verweise ich auf den folgenden Beitrag: Auto Increment .Dieser Beitrag wurde getroffen, um die management studio von MSSQL 2012. Aber die gleiche Logik gilt auch für die frühere version (2008,2005)
Andere Lösungen gefunden werden könnten während StackOverflow
Wenn ich Ihnen weiter behilflich sein, zögern Sie nicht und geben mir melden!!!
Hinweis: Wenn die vorherigen Daten sind von keinerlei nutzen für Sie, können Sie immer
clear the table
vor dem einfügen mit der Abfrage:DELETE FROM dbo.Vehicle_Transactions
diese Abfrage löscht alle Zeilen aus der Tabelle. Aber Sie müssen wachsam für jedeForgein Keys
wie Sie möglicherweise verursachen dataloss/Ausnahmen.MAX(TransactionID)
Wert vor dem einfügen. So werden Sie am Ende mit einer der Prozesse Folgen und einer der Prozesse scheitern. Verwenden Sie einfachIDENTITY
oderSEQUENCE
oder Natürliche Schlüssel.