Schlüssel austauschen
-
Hallo,
ich habe hier ein kleines SQL Problem, bei dem ich nicht so recht weiter komme.
Und zwar folgendes, ich möchte in einer Relation, die einen zusammengesetzten shclüssel enthält, einen Teil ersetzen.
Die Regeln für das ersetzen befinden sich in einer Umsetzungstabelle in welcher der alte Werte und der neue Wert drin stehen.
Das sieht zm Beispiel so aus:INSERT INTO umsetz VALUES ('321310001','321130001' ); INSERT INTO umsetz VALUES ('321310002','321130002' ); INSERT INTO umsetz VALUES ('321310003','321130003' ); INSERT INTO umsetz VALUES ('321310004','321130004' );
Nun habe ich die besagte Tabelle mit den zusammengesetzten Schlüsseln, wo der eine Wert halt ersetzt werden soll.
Die Schlüssel sehen dann z.B. so aus:321310001,-100 321310001,-300 321310001,-500
Wobei der linke Teil der ist, welcher ersetzt werden soll und inv_nr heißt.
Nun habe ich mein Update folgendermaßen versucht:
UPDATE kto_pos SET inv_nr = ( SELECT neu FROM umsetz u WHERE u.alt = kto_pos.inv_nr AND ROWNUM = 1);
Das ganze soll auf einer Oracle Datenbank laufen, deshalb das ROWNUM.
Das habe ich überhaupt nur deshalb eingbaut, weil ich sonst ja 3 Zeilen bekommen würde, was ja aber zuviel für das Update ist.Trotzdem bekomme ich den Fehler:
UPDATE kto_pos SET inv_nr = ( SELECT neu FROM umsetz u WHERE u.alt = kto_pos.inv_nr AND ROWNUM = 1 ) * FEHLER in Zeile 1: ORA-00001: Verstoß gegen Eindeutigkeit, Regel (ANLA1211.INV_JAHR159)
Wo ist das Prblem?