sql >> Databáze >  >> RDS >> Oracle

Aktualizace dělené tabulky oracle

Jaký je problém, který se snažíte vyřešit? Nemá smysl spouštět samostatné UPDATE příkazy proti každému oddílu ve smyčce. Pokud opravdu chcete aktualizovat každý řádek v tabulce, kde ab = 'c' , stačí vydat jedinou UPDATE prohlášení

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

potenciálně s PARALLEL nápověda, která by umožnila Oracle aktualizovat více oddílů paralelně.

Pokud opravdu, ale opravdu chcete aktualizovat každý oddíl nezávisle, bylo by mnohem smysluplnější to udělat na základě klíčů oddílu. Pokud má například tabulka denní oddíly založené na datu

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;

Pomocí partition( <<partition name>> ) syntaxe je absolutní poslední možností. Pokud jste skutečně odhodláni jít touto cestou, budete muset použít dynamický SQL, vytvořit příkaz SQL ve smyčce a použít EXECUTE IMMEDIATE nebo dbms_sql k provedení.



  1. Mysql dotaz pomocí where a group by clause

  2. Jak povolím přístup ke své databázi MySQL pouze z mé aplikace pro iOS? (Použití webové aplikace jako brány do db)

  3. Vyberte z funkce PostgreSQL, která vrátí složený typ

  4. Jak získat odlišné prvky pole s postgres?