sql >> Databasteknik >  >> RDS >> Oracle

UPPDATERA på INSERT duplicerad primärnyckel i Oracle?

MERGE är "do INSERT or UPDATE som lämpligt"-satsen i Standard SQL, och förmodligen därför även i Oracle SQL.

Ja, du behöver en "tabell" att slå samman från, men du kan nästan säkert skapa den tabellen direkt:

 MERGE INTO Movie_Ratings M
       USING (SELECT 1 AS mid, 3 AS aid, 8 AS rating FROM dual) N
          ON (M.mid = N.mid AND M.aid = N.aid)
       WHEN     MATCHED THEN UPDATE SET M.rating = N.rating
       WHEN NOT MATCHED THEN INSERT(  mid,   aid,   rating)
                             VALUES(N.mid, N.aid, N.rating);

(Syntax inte verifierad.)



  1. Decimal(3,2)-värden i MySQL är alltid 9,99

  2. Oracle ADF - Tomcat 6.x - MySql 5.5 - java.lang.AbstractMethodError

  3. unik indexöverträdelse under uppdatering

  4. CASE och COALESCE kortslutningsutvärdering fungerar med sekvenser i PL/SQL men inte i SQL