SQL/DB2 SQLSTATE=23505 Fehler beim ausführen einer UPDATE-Anweisung

Ich bin immer ein SQLSTATE=23505 Fehlermeldung, wenn ich führen Sie die folgenden DB2-Anweisung:

update SEOURLKEYWORD 
set URLKEYWORD = REPLACE(URLKEYWORD, '/', '-') 
where STOREENT_ID = 10701 
and URLKEYWORD like '%/%';

Nachdem eine schnelle Suche, ein SQL-Status 23505 Fehler ist wie folgt definiert:

EINEM EINGEFÜGTEN ODER AKTUALISIERTEN WERT IST UNGÜLTIG, DA DER INDEX IN DER INDEX-RAUM SCHRÄNKT DIE SPALTEN DER TABELLE, SO DASS KEINE ZWEI ZEILEN ENTHALTEN KANN, DIE DOPPELTE WERTE IN DIESEN SPALTEN ENTFERNEN DER VORHANDENEN ZEILE IST X

Den vollständigen Fehler, die ich sehe ist:

Den vollständigen Fehler, die ich sehe ist:

DB2-Datenbank-Fehler: [23505] [IBM][DB2/LINUXX8664] SQL0803N Einen oder mehrere Werte in der INSERT-Anweisung UPDATE-Anweisung, oder die foreign key-update verursacht durch eine DELETE-Anweisung sind nicht gültig, weil die primary key -, unique-Einschränkung oder einen eindeutigen index gekennzeichnet durch "2" schränkt die Tabelle "WSCOMUSR.SEOURLKEYWORD" aus, dass doppelte Werte für die index-Taste. SQLSTATE=23505
1 0

Ich bin mir nicht sicher, was der "index gekennzeichnet durch "2" bedeutet, aber es könnte sein, signifikant.

Den Eigenschaften der Spalten für die SEOURLKEYWORD Tabelle sind wie folgt:

SQL/DB2 SQLSTATE=23505 Fehler beim ausführen einer UPDATE-Anweisung

Basiert auf meinem Verständnis von diesen Informationen, die einzige Spalte, die gezwungen ist, einzigartig zu sein, ist SEOURLKEYWORD_ID, die primary key-Spalte. Dies macht es klingen wie die update-Anweisung, die ich versuche zu führen versucht, eine Zeile einzufügen, die einen SEOURLKEYWORD_ID, dass in der Tabelle bereits existiert.

Wenn ich führen Sie eine select * - Anweisung für die Zeilen, ich bin versucht, zu aktualisieren, hier ist was ich bekomme:

select * from SEOURLKEYWORD 
where storeent_id = 10701 
and lower(URLKEYWORD) like '%/%';

SQL/DB2 SQLSTATE=23505 Fehler beim ausführen einer UPDATE-Anweisung

Ich verstehe nicht, wie die Ausführung der UPDATE-Anweisung führt zu einem Fehler hier. Es sind nur 4 Zeilen dieser Erklärung sollte auch an zu suchen, und ich bin nicht, aktualisieren Sie manuell den primären Schlüssel überhaupt. Es scheint, wie es ist Wiedereinsetzen eine doppelte Zeile mit der Spalte "aktualisiert" Wert vor dem löschen der vorhandenen Zeile.

Warum sehe ich diese Fehlermeldung, wenn ich versuche zu aktualisieren, die URLKEYWORD Spalte dieser vier Zeilen? Wie kann ich dieses Problem beheben?

WICHTIG: Wie ich schon schrieb, diese Frage habe ich verengt das problem auf die Letzte der vier Zeilen in der Tabelle oben, SEOURLKEYWORD_ID = 3074457345616973668. Kann ich aktualisieren die anderen drei Zeilen ganz gut, aber die 4. Zeile den Fehler verursacht, ich habe keine Ahnung, warum. Wenn ich ein select * from SEOURLKEYWORD wo SEOURLKEYWORD_ID = 3074457345616973668;, ich sehe nur die 1. Zeile.

InformationsquelleAutor jros | 2016-12-13
Schreibe einen Kommentar