Oracle nově vylepšil ALTER TABLE statement a vylepšil práci s PARTITIONS (i se subky). Nově je možné v jendom příkazu pracovat s více PARTITONS najednou:
- Přidat jednu/více range, list a system partitions do tabulky
- Pridat jednu/více range či list subpartitions do partition
- Rozdělit partition či subpartition na dvě a více partitons či subpartitions – týká se list a range
- Spojit partition či subpartition na dvě a více partitons či subpartitions – týká se list a range
- Truncatovat jednu nebo více partition nebo subpartition
- Truncatovat jednu nebo více partition nebo subpartition
Řadím do spíše do těch užitečnějších vylepšení. Na zkoušku, že to funguje a na zapamatování, že něco takového je nyní možné – truncate, to je nejednodušší Nicméně implementace a syntaxe je velice podobná pro všechny tyto změny, na 11.2g to vypadalo takto:
Nyní na 12.1c:
Tedy list oddělený čárkama. Takže na zkoušku nějaká tabulka s partišnama a truncate více partitions najednou. Ze studijních důvodů použiji system partitions – těch způsobů jak tabulku partišnovat (top-level) je 7 (co, vím – tzn. minimálně), ale typicky se mluví jen o těch hash, list, range. Zrovna systémové partišnování není moc známé (a ani používané).
CREATE TABLE TBL_TEST_TRUNCATE (slova VARCHAR2(20))
PARTITION BY SYSTEM (
PARTITION p1,
PARTITION p2,
PARTITION p3
);
INSERT INTO TBL_TEST_TRUNCATE PARTITION(p1) VALUES ('Lupíčky');
INSERT INTO TBL_TEST_TRUNCATE PARTITION(p2) VALUES ('Hébičky');
INSERT INTO TBL_TEST_TRUNCATE PARTITION(p3) VALUES ('Kulíškové');
INSERT INTO TBL_TEST_TRUNCATE PARTITION(p2) VALUES ('Kozy');
commit;
A truncate:
ALTER TABLE TBL_TEST_TRUNCATE TRUNCATE PARTITION p1,p2;
Možná za zmínku stojí napsat, že je možné psát TRUNCATE PARTITION i TRUNCATE PARTITIONS. Ať s nebo bez s je možné truncatovat jednu čí více partitions. Oracle tomu řiká “sytnax clarity” a doporučení je psát to bez s nakonci pokud truncatuju jednu a opačně.