Släppa tabellkolumner

Vertica Analytics Platform Version 9.2.X dokumentation

ALTER TABLE…DROP COLUMN släpper den angivna tabellkolumnen och ros-behållarna som motsvarar den tappade kolumnen:

 Alter Table Table drop column 

när droppoperationen är klar återställs data som säkerhetskopieras från den aktuella epoken och framåt utan kolumnen. Data som återställts från en säkerhetskopia som föregår den aktuella epoken lägger till tabellkolumnen igen. Eftersom drop-operationer fysiskt rensar objektlagring och katalogdefinitioner (tabellhistorik) från tabellen, returnerar AT EPOCH (historiska) frågor ingenting för den tappade kolumnen.

den ändrade tabellen behåller sitt objekt-ID.

Drop column-operationer kan vara snabba eftersom dessa katalognivåändringar inte kräver omorganisation av data, så Vertica kan snabbt återta disklagring.

begränsningar

  • Du kan inte släppa eller ändra en primär nyckelkolumn eller en kolumn som deltar i tabellpartitioneringsklausulen.
  • Du kan inte släppa den första kolumnen i någon Sorteringsordning för projektioner eller kolumner som deltar i ett projektionssegmenteringsuttryck.
  • alla noder måste vara uppe.
  • Du kan inte släppa en kolumn som är kopplad till en åtkomstprincip. Försök att göra det ger följande fel:
    ERROR 6482: Failed to parse Access Policies for table "t1"

använda kaskad för att tvinga en droppe

om tabellkolumnen för att släppa har beroenden måste du kvalificeraDROP COLUMN klausul medCASCADE alternativ. Målkolumnen kan till exempel anges i en sorteringsordning för projektioner. I detta och andra fall hanterar DROP COLUMN…CASCADE beroendet genom att omorganisera katalogdefinitioner eller släppa en projektion. I alla fall utför CASCADE den minimala omorganisation som krävs för att släppa kolumnen.

använd CASCADE för att släppa en kolumn med följande beroenden:

tappade kolumnberoende KASKADBETEENDE

varje begränsning

Vertica tappar kolumnen när en utländsk nyckelbegränsning beror på en unik eller primär nyckelbegränsning på de refererade kolumnerna.

specificerad i Sorteringsordning för projektion

Vertica trunkerar Sorteringsordning för projektion till och med den projektion som tappas utan påverkan på fysisk lagring för andra kolumner och tappar sedan den angivna kolumnen. Till exempel om en projektion kolumner är i sorteringsordning (a,b,c), släppa kolumn B orsakar projektion sorteringsordning att vara bara (a), utelämna kolumn (c).

anges i ett projektionssegmenteringsuttryck

kolumnen som ska släppas är integrerad i projektionsdefinitionen. Om möjligt släpper Vertica projektionen så länge det inte äventyrar K-safety; annars rullar transaktionen tillbaka.

refereras som standardvärde för en annan kolumn

se släppa en kolumn refereras som standard, nedan.

släppa en kolumn som refereras som standard

Du kanske vill släppa en tabellkolumn som refereras av en annan kolumn som standardvärde. Till exempel definieras följande tabell med två kolumner, a och b:, där b får sitt standardvärde från kolumnen a:

=> Skapa tabell X (A int) osegmenterade alla noder;skapa tabell=> ändra tabell X Lägg till kolumn B int standard A;ändra tabell

i detta fall, släppa kolumn a kräver följande procedur:

  1. ta bort standardberoendet genomALTER COLUMN..DROP DEFAULT:
    => ALTER TABLE X ALTER COLUMN B DROP DEFAULT;
  2. skapa en ersättningsöverprojektion för måltabellen om ett eller båda av följande villkor är sanna:
  • målkolumnen är tabellens första sorteringsordningskolumn. Om tabellen inte har någon explicit sorteringsordning anger standardsorteringsordningen den första tabellkolumnen som den första sorteringsordningskolumnen. I det här fallet måste den nya superprojektionen ange en sorteringsordning som utesluter målkolumnen.
  • om tabellen är segmenterad anges målkolumnen i segmenteringsuttrycket. I det här fallet måste den nya superprojektionen ange ett segmenteringsuttryck som utesluter målkolumnen.

i föregående exempel har tabellen x en standardsorteringsordning på (a,b). Eftersom kolumnen a är tabellens första sorteringsordningskolumn måste du skapa en ersättnings superprojection som sorteras på kolumnen 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 implementerar direktivet CASCADE enligt följande:

    • släpper den ursprungliga superprojektionen för tabell xx_super).
    • uppdaterar ersättnings superprojection x_p1 genom att släppa kolumnen a.

    exempel

    följande serie kommandon släpper framgångsrikt en bytea-datatypskolumn:

     => Skapa tabell 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 

    följande serie kommandon försöker släppa en FLOAT (8) kolumn och misslyckas eftersom det inte finns tillräckligt med projektioner för att upprätthålla K-säkerhet.

    => Skapa tabell t (x FLOAT(8),y FLOAT(08));Skapa tabell=> ändra tabell t släpp kolumn y begränsa;ändra tabell=> välj y från T;fel 2624: kolumn "y" existerar inte=> Alter Table t drop x Cascade;rollback 2409: kan inte släppa några fler kolumner i T=> drop table t Cascade;



    Lämna ett svar

    Din e-postadress kommer inte publiceras.