Oracle
 sql >> Baza danych >  >> RDS >> Oracle

oracle sql:zaktualizuj, jeśli istnieje, wstawiaj jeszcze

MERGE nie potrzebuje "wielu tabel", ale potrzebuje zapytania jako źródła. Coś takiego powinno działać:

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);

Alternatywnie możesz to zrobić w 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wybrać podciąg w Oracle SQL do określonego znaku?

  2. Dostrajanie Oracle DG40DBC

  3. jak uzyskać rowNum jak kolumnę w sqlite IPHONE

  4. Błąd SQL:ORA-02291:ograniczenie integralności

  5. Dlaczego nie mogę zmusić Oracle 11g do zużywania większej liczby procesorów dla pojedynczego zapytania SQL?