Copying sources and texts (also in parts) for publishing without our permission is NOT ALLOWED. We are fed up with finding our work on other sites (like stackoverflow).
Das Kopieren von Quellcode und Texten (auch in Auszügen) ist nicht erlaubt. Wir haben es gründlich satt, unsere Arbeit auf anderen Webseiten zu finden.

Copying for non-public usage is allowed.           Das private Kopieren und Benutzen ist natürlich erlaubt und erwünscht.
01. Apr 2009
Teaser

Oracle: MERGE Beispiel

Um Daten automatisch entweder in die Tabelle einzufügen oder upzudaten, können Sie den MERGE Befehl von Oracle nutzen. Im folgenden PHP-Beispiel wird die Nutzung verdeutlicht. Dabei ist zusätzlich eine automatische Löschung des Datensatzes eingebaut, wenn kein Benutzername übergeben wurde (Erklärung s.u.):

foreach ($users as $id => $username) {
  if (empty($username))
    $sql = "DELETE FROM users WHERE id = $id";
  else {
    $sql = "MERGE INTO users U
            USING dual ON (dual.dummy is not null and U.id = $id)
            WHEN MATCHED
              THEN UPDATE SET name = $username
            WHEN NOT MATCHED
              THEN INSERT (id, name) VALUES ($id, $username)";
  }
}

Als SQL Beispiel:

MERGE INTO users U
USING dual ON (dual.dummy is not null and U.id = 10)
WHEN MATCHED
  THEN UPDATE SET name = 'Max Muster'
WHEN NOT MATCHED
  THEN INSERT (id, name) VALUES (10, 'Max Muster')

Das Script sucht nach dem Benutzer mit der ID “10”. Wird er gefunden, dann wird der Name per UPDATE geändert. Wird der Eintrag nicht gefunden, dann wird per INSERT ein entsprechender Datensatz angelegt.

Bei Fragen oder Anmerkung schreiben Sie uns gerne einen Kommentar.
Wir freuen uns auch über Einträge, wenn Ihnen dieser Artikel half.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

14 − sieben =