Ergebnis 1 bis 6 von 6

Thema: Datensatz anhand des Index ersetzen

  1. #1
    bamdenied ist offline Neuer Benutzer
    Registriert seit
    19.04.2011
    Beiträge
    7

    Standard Datensatz anhand des Index ersetzen

    Hallo,

    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?


    Vielen Dank
    mfg Mark

  2. #2
    ads
    ads ist gerade online Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.055

    Standard

    REPLACE? Bist du dir sicher, im richtigen Forum zu sein?

    Ansonsten tipp doch mal in die Suche auf der PostgreSQL-Webseite den Begriff "upsert" ein.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  3. #3
    castorp ist offline Erfahrener Benutzer
    Registriert seit
    27.06.2009
    Beiträge
    524

    Standard

    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.

    Im Handbuch ist auch ein Beispiel wie man das elegant in einer Funktion kapselt:
    http://www.postgresql.org/docs/curre...UPSERT-EXAMPLE
    A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

  4. #4
    ads
    ads ist gerade online Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.055

    Standard

    Zwichen UPDATE und INSERT hast du aber eine Race Condition.
    Die musst du ggf. über einen Lock abfangen.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  5. #5
    castorp ist offline Erfahrener Benutzer
    Registriert seit
    27.06.2009
    Beiträge
    524

    Standard

    Zitat Zitat von ads Beitrag anzeigen
    Zwichen UPDATE und INSERT hast du aber eine Race Condition.
    Die musst du ggf. über einen Lock abfangen.
    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.
    A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

  6. #6
    bamdenied ist offline Neuer Benutzer
    Registriert seit
    19.04.2011
    Beiträge
    7

    Standard

    Alles klar, weiß ich bescheid ich probier es erst einmal =D

    Vielen Dank
    Mark Brings

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 16.02.2011, 13:41
  2. Antworten: 4
    Letzter Beitrag: 22.06.2010, 08:59
  3. suchen & ersetzen ?
    Von vollcom im Forum Andere Datenbanken
    Antworten: 10
    Letzter Beitrag: 29.04.2009, 18:59
  4. Antworten: 5
    Letzter Beitrag: 27.03.2008, 19:29
  5. Antworten: 5
    Letzter Beitrag: 02.11.2007, 13:15

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum