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

Aktualizowanie wyroczni tabel partycjonowanych

Jaki problem próbujesz rozwiązać? Nie ma sensu uruchamiać oddzielnej UPDATE instrukcji względem każdej partycji w pętli. Jeśli naprawdę chcesz zaktualizować każdy wiersz w tabeli, gdzie ab = 'c' , po prostu wydaj pojedynczą UPDATE oświadczenie

UPDATE cdr_data cdt
   SET a = 'B'
 WHERE ab = 'c'

potencjalnie z PARALLEL wskazówka, która pozwoliłaby Oracle na równoległe aktualizowanie wielu partycji.

Jeśli naprawdę, naprawdę chcesz aktualizować każdą partycję niezależnie, bardziej sensowne byłoby zrobienie tego na podstawie kluczy partycji. Na przykład, jeśli Twój stół ma dzienne partycje na podstawie daty

FOR i IN 1 .. <<number of daily partitions>>
LOOP
  UPDATE cdr_data cdt
     SET a = 'B'
   WHERE ab = 'c'
     AND partition_key = <<minimum date>> + i;
END LOOP;

Korzystanie z partition( <<partition name>> ) składnia jest absolutną ostatecznością. Jeśli naprawdę chcesz iść tą ścieżką, musisz użyć dynamicznego SQL, konstruując instrukcję SQL w pętli i używając EXECUTE IMMEDIATE lub dbms_sql aby go wykonać.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Entity Framework generuje short zamiast int

  2. Jak skonfigurować DbContext do pracy z Oracle ODP.Net i EF CodeFirst?

  3. Pierwsze kroki z Oracle Application Express-APEX

  4. Wyrocznia i lewe połączenie zewnętrzne

  5. wstawianie/aktualizacje/usuwanie logów w bazie danych Oracle