sql >> Database >  >> RDS >> Oracle

oracle sql:update indien bestaat, anders invoegen

MERGE heeft geen "meerdere tabellen" nodig, maar het heeft wel een query als bron nodig. Iets als dit zou moeten werken:

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

U kunt dit ook doen in 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. Return als array van JSON-objecten in SQL (Postgres)

  2. 7-stappenhandleiding voor het gebruik van toegang met Azure Multi-Factor Authentication

  3. Controleer het parametertype van een partitiefunctie in SQL Server (T-SQL)

  4. In plaats van LIKE en ~, waarom werkt alleen VERGELIJKBAAR MET als regex-match met alternatieven wordt uitgevoerd?