Ich habe eine einfache INSERT-Abfrage, wo ich stattdessen UPDATE verwenden muss, wenn der Primärschlüssel ein Duplikat ist. In MySQL scheint dies einfacher, in Oracle scheint es, dass ich MERGE verwenden muss.UPDATE auf INSERT doppelte Primärschlüssel in Oracle?
Alle Beispiele, die ich von MERGE finden konnte, hatten eine Art "Quelle" und "Ziel" -Tabellen, in meinem Fall sind Quelle und Ziel die gleiche Tabelle. Ich konnte die Beispiele nicht nachvollziehen, um eine eigene Abfrage zu erstellen.
Ist MERGE der einzige Weg oder gibt es vielleicht eine bessere Lösung?
INSERT INTO movie_ratings
VALUES (1, 3, 5)
Es ist im Grunde dieser und der Primärschlüssel ist die ersten zwei Werte, so ein Update so sein würde:
UPDATE movie_ratings
SET rating = 8
WHERE mid = 1 AND aid = 3
Ich dachte, einen Auslöser zu verwenden, die automatisch die Update-Anweisung ausführen würde, wenn die INSERT wurde nur dann aufgerufen, wenn der Primärschlüssel ein Duplikat ist. Gibt es ein Problem damit? Ich brauche etwas Hilfe mit Auslösern, da ich Schwierigkeiten habe, sie zu verstehen und meine eigenen zu machen.
In einem solchen Beispiel wäre es sinnvoll, die (optionale) Liste der Spaltennamen im INSERT zu verwenden, um uns genügend von der Tabellenstruktur zu geben. Vielleicht, wenn Sie zeigen, was in MySQL getan wird, sehen die Leute vielleicht, wonach Sie suchen - oder vielleicht ist das meine Neugierde/Faulheit. –
Die Tabellenstruktur ist impliziert, es ist Mitte (Int), Hilfe (Int), Bewertung (Int). –