sql >> Databáze >  >> RDS >> Oracle

Oracle sql:aktualizujte, pokud existuje else insert

MERGE nepotřebuje "více tabulek", ale potřebuje jako zdroj dotaz. Něco takového by mělo fungovat:

MERGE INTO mytable d
USING (SELECT 1 id, 'x' name from dual) s
ON (d.id = s.id)
WHEN MATCHED THEN UPDATE SET d.name = s.name
WHEN NOT MATCHED THEN INSERT (id, name) VALUES (s.id, s.name);

Případně to můžete udělat v PL/SQL:

BEGIN
  INSERT INTO mytable (id, name) VALUES (1, 'x');
EXCEPTION
  WHEN DUP_VAL_ON_INDEX THEN
    UPDATE mytable
    SET    name = 'x'
    WHERE id = 1;
END;


  1. Cheat Sheet s příkazy SQL – Jak se naučit SQL za 10 minut

  2. Správa vysoké dostupnosti v PostgreSQL – Část II:Správce replikací

  3. Jak je implementován časový limit dotazu JDBC společnosti Oracle?

  4. SQL - POKUD EXISTUJE AKTUALIZUJTE JINÉ INSERT INTO