Dropping table Columns

Vertica Analytics Platform Verze 9.2.x Dokumentaci

ALTER TABLE…DROP COLUMN kapky zadaného sloupce tabulky a ROS nádobách, které odpovídají klesl sloupce:

ALTER TABLE tabulka DROP column 

Po přetažení operace dokončí, data zálohována ze současné epochy kupředu zotaví bez sloupec. Data získaná ze zálohy, která předchází aktuální epoše, znovu přidejte sloupec tabulky. Protože drop operace fyzicky očistit objekt skladování a katalog definice (tabulka historie) z tabulky, AT EPOCH (historické) dotazy návratu nic klesl sloupec.

změněná tabulka si zachovává své ID objektu.

operace se sloupci Drop mohou být rychlé, protože tyto změny na úrovni katalogu nevyžadují reorganizaci dat, takže Vertica může rychle získat zpět diskové úložiště.

omezení

  • nelze zrušit nebo změnit sloupec primárního klíče nebo sloupec, který se účastní klauzule rozdělení tabulky.
  • nelze zrušit první sloupec libovolného pořadí řazení projekce nebo sloupce, které se účastní výrazu segmentace projekce.
  • všechny uzly musí být nahoře.
  • sloupec přidružený k zásadám přístupu nelze zrušit. Pokusy o to způsobují následující chybu:
    ERROR 6482: Failed to parse Access Policies for table "t1"

Použití KASKÁDY Vynutit Drop

Pokud sloupec tabulky na drop má závislosti, musíte kvalifikovat DROP COLUMN klauzule s CASCADE možnost. Například cílový sloupec může být zadán v pořadí řazení projekce. V tomto a dalších případechDROP COLUMN…CASCADE řeší závislost reorganizací definic katalogu nebo zrušením projekce. Ve všech případech CASCADE provede minimální reorganizaci potřebnou k vypuštění sloupce.

Použití CASCADE drop sloupec následující závislosti:

Klesl sloupec závislost CASCADE chování

omezení

Vertica kapky sloupce při omezení CIZÍHO KLÍČE závisí na UNIKÁTNÍ nebo PRIMÁRNÍ KLÍČ omezení na odkazované sloupce.

Uvedené v projekci řazení

Vertica zkrátí projekce řazení až do a včetně projekce, který je zrušen, bez dopadu na fyzické úložiště pro další sloupce, a pak klesne na zadaný sloupec. Například pokud jsou sloupce projekce v pořadí řazení (a,b,c), zrušení sloupce b způsobí, že pořadí řazení projekce bude jen (a), vynechání sloupce (c).

specifikováno v projekčním segmentačním výrazu

sloupec, který má klesnout, je nedílnou součástí definice projekce. Pokud je to možné, Vertica upustí projekci, pokud to neohrozí k-bezpečnost; v opačném případě se transakce vrátí zpět.

odkazováno jako výchozí hodnota jiného sloupce

viz zrušení sloupce odkazovaného jako výchozí, níže.

Vrácení Sloupec Odkazuje jako Výchozí

možná se Budete chtít zastavit v tabulce sloupec, který odkazuje na jiný sloupec jako výchozí hodnotu. Například, v následující tabulce je definována se dvěma sloupy, ab:, kde b dostane jeho výchozí hodnoty ze sloupce a:

=> VYTVOŘIT TABULKU, x (int) UNSEGMENTED VŠECHNY UZLY;CREATE TABLE=> ALTER TABLE x PŘIDAT SLOUPEC b int VÝCHOZÍM nastavení;ALTER TABLE

V tomto případě, vrácení sloupec a vyžaduje následující postup:

  1. Odstranit výchozí závislosti pomocí ALTER COLUMN..DROP DEFAULT:
    => ALTER TABLE x ALTER SLOUPEC b DROP DEFAULT;
  2. Vytvořit náhradní superprojection pro cílové tabulky, pokud jeden nebo oba z následujících podmínek pravdivá:
  • cíl sloupec je v tabulce první pořadí řazení sloupec. Pokud tabulka nemá jednoznačné pořadí řazení, výchozí pořadí řazení tabulky určuje první sloupec tabulky jako první sloupec pořadí řazení. V tomto případě musí nová superprojekce specifikovat pořadí řazení, které vylučuje cílový sloupec.
  • pokud je tabulka segmentována, je ve výrazu segmentace zadán cílový sloupec. V tomto případě musí nová superprojekce specifikovat výraz segmentace, který vylučuje cílový sloupec.

vzhledem k předchozímu příkladu má tabulka x výchozí pořadí řazení (a,b). Protože sloupec a je sloupec prvního řazení tabulky, musíte vytvořit náhradní superprojekci, která je seřazena ve sloupci b:

=> CREATE PROJECTION x_p1 as select * FROM x ORDER BY b UNSEGMENTED ALL NODES;

  • Run START_REFRESH:
    => SELECT START_REFRESH(); START_REFRESH---------------------------------------- Starting refresh background process.(1 row)
  • Run MAKE_AHM_NOW:
    => SELECT MAKE_AHM_NOW(); MAKE_AHM_NOW------------------------------- AHM set (New AHM Epoch: 1231)(1 row)
  • Drop the column:
    => ALTER TABLE x DROP COLUMN a CASCADE;
  • Vertica implementuje CASCADE směrnice takto:

    • Kapek původní superprojection pro tabulku xx_super).
    • aktualizuje náhradní superprojekci x_p1 zrušením sloupce a.

    Příklady

    následující sérii příkazů úspěšně kapky BYTEA datový typ sloupce:

    => CREATE TABLE t (x BYTEA(65000), y BYTEA, z BYTEA(1)); CREATE TABLE=> ALTER TABLE t DROP COLUMN y;ALTER TABLE=> SELECT y FROM t;ERROR 2624: Column "y" does not exist=> ALTER TABLE t DROP COLUMN x RESTRICT;ALTER TABLE=> SELECT x FROM t;ERROR 2624: Column "x" does not exist=> SELECT * FROM t; z---(0 rows)=> DROP TABLE t CASCADE;DROP TABLE

    následující série příkazů se pokusí vypustit sloupec FLOAT(8) a selže, protože není dostatek výstupků pro udržení k-bezpečnosti.

    => CREATE TABLE t (x, FLOAT(8),FLOAT y(08));CREATE TABLE=> ALTER TABLE t DROP SLOUPEC y OMEZENÍ;ALTER TABLE=> ZVOLTE možnost y Z t;2624 CHYBA: Sloupec "y" neexistuje=> ALTER TABLE t DROP x CASCADE;ROLLBACK 2409: Nemůže klesnout víc sloupců v t=> DROP TABLE t KASKÁDY;



    Napsat komentář

    Vaše e-mailová adresa nebude zveřejněna.