ich möchte das ein Datensatz erstellt wird wenn der angegebene Index nicht vorhanden ist und wenn er vorhanden ist, sollen alle Atribute ersetzt werden.
Ich hab mich bereits mit REPLACE auseinander gesetzt, aber mit dieser Funktion auch kein Lösungsansatz erarbeiten können.
Ein kleines Beispiel:
artikelnummer, Name , preis
wie könnte ich den Datensatz veränder bzw. erstellen(fals nicht vorhanden) wenn ich die selbe Artikelnummer eingeb?
Du suchst nach einem MERGE Befehl, den PostgreSQL (noch) nicht hat.
Das übliche Vorgehen ist, dass Du einfach ein UPDATE machst und dann prüfst ob ein Datensatz geändert wurde.
Falls kein Datensatz geändert wurde, wird der INSERT gemacht.
Klar, der folgende INSERT kann natürlich scheitern - aber das kann schliesslich jeder INSERT.
Ich bin kein Freund von (table) locks, und würde deswegen eher versuchen den Fehler beim INSERT sauber zu behandeln (auch hier wieder: wie bei jedem anderen INSERT auch).
Wie man genau damit umgehen soll, hängt (wie immer) stark vom Anwendungsfall und den Anforderungen ab.