sql >> Database teknologi >  >> RDS >> Oracle

oracle sql:opdater hvis der findes andet indsæt

MERGE behøver ikke "flere tabeller", men det har brug for en forespørgsel som kilde. Sådan noget burde virke:

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

Alternativt kan du gøre dette i 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. brug kommandoen database_name i PostgreSQL

  2. ORA-02287:sekvensnummer ikke tilladt her

  3. Hvordan vælger man en specifik kolonne fra rumdatabase givet en specifik parameter i værelsesforespørgsel?

  4. Opbygning og vedligeholdelse af en HR-database