Ankündigung

Einklappen
Keine Ankündigung bisher.

UPSERT Anweisung nicht auf KEY sondern auf beliebige Spalte mappen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • UPSERT Anweisung nicht auf KEY sondern auf beliebige Spalte mappen

    Hi,

    ich optimiere gerade beime Scripts. Statts ein einfaches INSERT nutze ich nun schon Mutliinserts.

    Bei UPDATE Anweisungen geht das aber nicht ganz so einfach.
    Hier gibt es ja UPSERT Möglichkeiten.
    Leider beruhnen die auf KEY-Prüfung.

    z.B.
    Code:
    INSERT INTO upsert (id, updated_on, value) VALUES (1, CURRENT_TIMESTAMP, 'abc')
    ON DUPLICATE KEY UPDATE updated_on = CURRENT_TIMESTAMP, value = 'abc';
    Der KEY in meiner Tabell ist aber 'id'.. und die ist fortlaufend und hat keinerlei Relevanz.
    Ich bräuchte es auf die Spalte "Artikelnummer" die eindeutig ist. Nur leider finde ich keine brauchbare Anweisung hierzu.

    So einfach macht es mir SQL schon mal nicht.
    Code:
    INSERT INTO upsert (id, updated_on, value) VALUES (1, CURRENT_TIMESTAMP, 'abc')
    ON DUPLICATE `artikelnummer` UPDATE updated_on = CURRENT_TIMESTAMP, value = 'abc';
    Aber wie könnte es sonst gehen... ohne dass ich PHP nutze um doch noch die passende ID ermitteln zu können.

    Danke

  • #2
    Zitat von daniel_1998 Beitrag anzeigen
    Leider beruhnen die auf KEY-Prüfung.
    Es gibt nicht nur Primary Keys. Auch Unique Keys gehen da.


    Zitat von daniel_1998 Beitrag anzeigen
    So einfach macht es mir SQL schon mal nicht.
    Du musst dich schon an die Syntax halten...

    Kommentar


    • #3
      Zitat von daniel_1998 Beitrag anzeigen
      Hi,

      ich optimiere gerade beime Scripts. Statts ein einfaches INSERT nutze ich nun schon Mutliinserts.

      Bei UPDATE Anweisungen geht das aber nicht ganz so einfach.
      Hier gibt es ja UPSERT Möglichkeiten.
      Leider beruhnen die auf KEY-Prüfung.



      Der KEY in meiner Tabell ist aber 'id'.. und die ist fortlaufend und hat keinerlei Relevanz.
      Ich bräuchte es auf die Spalte "Artikelnummer" die eindeutig ist. Nur leider finde ich keine brauchbare Anweisung hierzu.

      So einfach macht es mir SQL schon mal nicht.
      Code:
      INSERT INTO upsert (id, updated_on, value) VALUES (1, CURRENT_TIMESTAMP, 'abc')
      ON DUPLICATE `artikelnummer` UPDATE updated_on = CURRENT_TIMESTAMP, value = 'abc';
      Aber wie könnte es sonst gehen... ohne dass ich PHP nutze um doch noch die passende ID ermitteln zu können.

      Danke

      Das ist auch alles kompletter Murks. Du nennst (id, updated_on, value) als zu insertende Spalten und wartes auf Duplicate für artikelnummer.
      PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

      Kommentar

      Lädt...
      X