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.