SQL-server-update-Fehler - Msg 2627
Ich versuche zu aktualisieren meine Tabelle "Angebot".
Er hat diese Spalten:
- Bestellanforderung keine(rq_no)
- requisition Jahr(rq_year)
- zart Anzahl(te_no)
- te_date
- te-due_date
- zarte status(te_status)
- te_year
Habe ich versucht den folgenden code:
update tender
set te_status='D'
where rq_no like 'Q052401C' AND te_year like '2012' and te_no like 'n0066'
wenn ich irgendwelche anderen Zeichen anstelle von 'D'
im te_status
, update erfolgreich ist, außer für 'D'
z.B.:
set te_status='S'
Wenn ich
SELECT * FROM TENDER
WHERE
rq_no LIKE 'Q052401C' AND te_year LIKE '2012' AND te_no LIKE 'n0066'
es gibt eine einzelne Zeile zurück.
Zeigt es mir die folgende Fehlermeldung:
Msg 2627, Ebene 14, Status 1, Zeile 1
Verletzung der PRIMARY KEY-Einschränkung 'PK_tender'.
Kann nicht legen Sie doppelten Schlüssel im Objekt 'dbo.zart'.
Der doppelte Wert ist (N0066, Q052401C, D, 2012)
Die Anweisung wurde beendet.
Was bedeutet all dies bedeuten?
InformationsquelleAutor user2168350 | 2013-03-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es bedeutet, dass Sie einen Primärschlüssel definiert haben, die auf die Tabelle, die besteht aus den Feldern in Bezug auf die Werte angezeigt, d.h. (N0066, Q052401C, D, 2012) - und dass, wenn Sie ändern Sie den te-status-Feld D auf der Zeile, die Sie aktualisieren möchten, dann führt dies in einem Primärschlüssel, der bereits existiert.
Abhängig von der DB, die Sie verwenden, Sie kann manchmal nicht AKTUALISIERT einen Primärschlüssel Feld - das sollten Sie tun einem LÖSCHEN der alten Zeile und EINFÜGEN der geänderten Zeile (mit dem neuen Schlüssel).
InformationsquelleAutor Roger Rowland