Slippe Tabell Kolonner

Vertica Analytics Plattform Versjon 9.2.x Dokumentasjon

ALTER TABLE…DROP COLUMNfaller den angitte tabellkolonnen og ros-beholderne som samsvarer med den droppede kolonnen:

 alter tabelltabell drop-kolonne 

etter at drop-operasjonen er fullført, gjenopprettes data som sikkerhetskopieres fra gjeldende epoke, uten kolonnen. Data utvinnes fra en sikkerhetskopi som går forut for gjeldende epoke re-legge tabellen kolonne. Fordi slipp operasjoner fysisk tømme objekt lagring og katalogdefinisjoner (tabell historie) fra tabellen,AT EPOCH (historisk) spørringer returnere ingenting for droppet kolonnen.

den endrede tabellen beholder objekt-ID-EN.

Drop kolonne operasjoner kan være rask fordi disse katalognivå endringer ikke krever data omorganisering, Så Vertica kan raskt gjenvinne disklagring.

Restriksjoner

  • du kan ikke slippe eller endre en primærnøkkelkolonne eller en kolonne som deltar i tabellpartisjonering-setningsdelen.
  • du kan ikke slippe den første kolonnen i en hvilken som helst sorteringsrekkefølge for projeksjon, eller kolonner som deltar i et uttrykk for projeksjonssegmentering.
  • alle noder må være oppe.
  • du kan ikke slippe en kolonne knyttet til en tilgangspolicy. Forsøk på å gjøre det produserer følgende feil:
    ERROR 6482: Failed to parse Access Policies for table "t1"

Bruke GJENNOMGRIPENDE For Å Tvinge En Dråpe

hvis tabellkolonnen å slippe har avhengigheter, må du kvalifisereDROP COLUMN klausul med CASCADE alternativet. Målkolonnen kan for eksempel angis i en sorteringsrekkefølge for projeksjon. I dette og andre tilfeller håndterer DROP COLUMN…CASCADE avhengigheten ved å omorganisere katalogdefinisjoner eller slippe en projeksjon. I alle tilfeller utfører CASCADE minimal omorganisering som kreves for å slippe kolonnen.

Bruk CASCADE for å slippe en kolonne med følgende avhengigheter:

droppet kolonneavhengighet

GJENNOMGRIPENDE oppførsel

enhver begrensning

vertica faller kolonnen når en fremmednøkkelbegrensning avhenger av en unik eller primærnøkkelbegrensning i de refererte kolonnene.

Angitt i sorteringsrekkefølge for projeksjon

Vertica avkorter sorteringsrekkefølgen for projeksjon opp til og med projeksjonen som slippes uten innvirkning på fysisk lagring for andre kolonner, og deretter faller den angitte kolonnen. Hvis for eksempel kolonnene til en projeksjon er i sorteringsrekkefølge (a,b,c), vil dropping av kolonne b føre til at projeksjonens sorteringsrekkefølge bare er (a), og utelater kolonne (c).

Angitt i et projeksjons segmenteringsuttrykk

kolonnen som skal slippes er integrert i projeksjonsdefinisjonen. Hvis Det er mulig, Faller Vertica projeksjonen så lenge det ikke kompromitterer k-safety; ellers ruller transaksjonen tilbake.

Referert til som standardverdi for en annen kolonne

Se Slippe En Kolonne Referert til som Standard nedenfor.

Slippe En Kolonne Referert Til Som Standard

du vil kanskje slippe en tabellkolonne som refereres til av en annen kolonne som standardverdi. For eksempel er følgende tabell definert med to kolonner, a og b:, der b får standardverdien fra kolonnen a:

re xml:space=»opprett tabell x (a int) usegmentert alle noder;opprett tabell=>alter tabell x legg til kolonne b int standard a;alter tabell

i dette tilfellet, slippe kolonne a krever følgende prosedyre:

  1. Fjern standardavhengigheten gjennomALTER COLUMN..DROP DEFAULT:
    => ENDRE TABELL x ENDRE KOLONNE b SLIPP STANDARD;
  2. Opprett en erstatnings superprojeksjon for måltabellen hvis en eller begge av følgende betingelser er oppfylt:
  • målkolonnen er tabellens første sorteringsrekkefølge. Hvis tabellen ikke har noen eksplisitt sorteringsrekkefølge, angir standard tabellsorteringsrekkefølge den første tabellkolonnen som den første sorteringsrekkefølgen. I dette tilfellet må den nye superprojection angi en sorteringsrekkefølge som utelukker målkolonnen.
  • hvis tabellen er segmentert, er målkolonnen angitt i segmenteringsuttrykket. I dette tilfellet må den nye superprojection angi et segmenteringsuttrykk som utelukker målkolonnen.

gitt det forrige eksemplet, har tabellenx en standard sorteringsrekkefølge av (a, b). Fordi kolonne a er tabellens første sorteringsrekkefølge kolonne, må du opprette en erstatning superprojection som er sortert på kolonne 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 implementererCASCADE direktivet som følger:

    • Faller den opprinnelige superprojection for tabellen xx_super).
    • Oppdaterer erstatnings superprojectionx_p1 ved å slippe kolonnea.

    Eksempler

    følgende serie med kommandoer faller en BYTEA datatype kolonne:

    = > OPPRETT 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ølgende serie med kommandoer prøver å slippe EN FLOAT(8) kolonne og mislykkes fordi Det ikke er nok projeksjoner for å opprettholde k-sikkerhet.

    => OPPRETT TABELL t (x FLYTE(8),y FLYTE(08));OPPRETT TABELL=> ENDRE TABELL T SLIPP KOLONNE y BEGRENSE;ALTER TABELL=> VELG y fra t;FEIL 2624: kolonne "y" finnes ikke=> alter tabell t slipp x gjennomgripende;ROLLBACK 2409: kan ikke slippe FLERE KOLONNER I T=> slipp tabell t gjennomgripende;



    Legg igjen en kommentar

    Din e-postadresse vil ikke bli publisert.