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

Aktualizacja zapytania Oracle SQL Update trwa kilka dni

Możesz tego spróbować

  1  MERGE
  2     INTO  target_table tgt
  3     USING source_table src
  4     ON  ( src.object_id = tgt.object_id )
  5  WHEN MATCHED
  6  THEN
  7     UPDATE
  8     SET   tgt.object_name = src.object_name
  9     ,     tgt.object_type = src.object_type
 10  WHEN NOT MATCHED
 11  THEN
 12     INSERT ( tgt.object_id
 13            , tgt.object_name
 14            , tgt.object_type )
 15     VALUES ( src.object_id
 16            , src.object_name
 17            , src.object_type );

Składnia na pierwszy rzut oka wygląda trochę zniechęcająco, ale jeśli czytamy od góry do dołu, jest dość intuicyjna. Zwróć uwagę na następujące klauzule:

•MERGE (wiersz 1):jak wspomniano wcześniej, jest to teraz czwarta instrukcja DML w Oracle. Wszelkie wskazówki, które chcielibyśmy dodać bezpośrednio po tym słowie kluczowym (np. MERGE /*+ HINT */);

•INTO (linia 2):w ten sposób określamy cel MERGE. Celem musi być tabela lub widok z możliwością aktualizacji (nie można tutaj użyć widoku wbudowanego);

•USING (wiersz 3):klauzula USING reprezentuje źródłowy zestaw danych dla MERGE. Może to być pojedyncza tabela (jak w naszym przykładzie) lub widok wbudowany;

• ON () (wiersz 4):klauzula ON to miejsce, w którym dostarczamy sprzężenie między źródłowym zbiorem danych a tabelą docelową. Pamiętaj, że warunki przyłączenia muszą być podane w nawiasach;

•WHEN MATCHED (wiersz 5):w tej klauzuli instruujemy Oracle, co zrobić, gdy mamy już pasujący rekord w tabeli docelowej (tj. istnieje połączenie między źródłowym i docelowym zbiorem danych). Oczywiście w tym przypadku chcemy UPDATE. Jednym z ograniczeń tej klauzuli jest to, że nie możemy aktualizować żadnej z kolumn użytych w klauzuli ON (choć oczywiście nie jest to konieczne, ponieważ są już zgodne). Każda próba dołączenia kolumny sprzężenia spowoduje zgłoszenie nieintuicyjnego wyjątku nieprawidłowego identyfikatora; i

•WHEN NOT MATCHED (wiersz 10):ta klauzula służy do WSTAWIANIA rekordów, dla których nie ma aktualnego dopasowania.



  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 okresowo aktualizować moją lokalną bazę danych o zmiany z produkcyjnej bazy danych?

  2. Połącz oracle z nodejs

  3. Postgresql i Oracle:zaktualizuj wiele tabel ze wspólnego podzapytania

  4. Jak rozwiązać brakujące wyrażenie ORA-00936

  5. Nie można znaleźć pliku Oracle.DataAccess.dll, chociaż istnieje