Oracle
 sql >> база данни >  >> RDS >> Oracle

Вмъкване на Oracle, ако редът не съществува

Когато стартирам това, получавам грешката "липсва INTO ключова дума".

Защото IGNORE не е ключова дума в Oracle. Това е синтаксисът на MySQL.

Това, което можете да направите, е да използвате MERGE.

merge into table1 t1
    using (select 'value1' as value1 ,value2 
           from table2 
           where table2.type = 'ok' ) t2
    on ( t1.value1 = t2.value1)
when not matched then
   insert values (t2.value1, t2.value2)
/

От Oracle 10g можем да използваме обединяване, без да обработваме и двата клона. В 9i трябваше да използваме "фиктивен" МАЧИРАН клон.

В по-древните версии единствените опции бяха:

  1. тествайте за съществуването на реда преди да издадете INSERT (или в подзаявка);
  2. за да използвате PL/SQL за изпълнение на INSERT и обработка на произтичаща грешка DUP_VAL_ON_INDEX.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Възможно ли е да се препратят към имена на колони чрез свързващи променливи в Oracle?

  2. Как да конфигурирате подчертаване на синтаксиса в SQLcl

  3. Метод за събиране:функция COUNT в базата данни на Oracle

  4. Управляван ODP.NET драйвер не се показва в диалоговия прозорец за източник на данни

  5. грешка при липсваща ключова дума в оператора на oracle CASE WHEN sql