Tabelkolonner

Vertica Analytics Platform Version 9.2.

ALTER TABLE…DROP COLUMN dropper den angivne tabelkolonne og ros-beholderne, der svarer til den faldne kolonne: Alter Table Table drop column

Når drop-operationen er afsluttet, gendannes data, der sikkerhedskopieres fra den aktuelle epoke og fremefter, uden kolonnen. Data, der er gendannet fra en sikkerhedskopi, der går forud for den aktuelle epoke, tilføjer tabelkolonnen igen. Da drop-operationer fysisk renser objektlagring og katalogdefinitioner (tabelhistorik) fra tabellen, returnerer AT EPOCH (historiske) forespørgsler intet for den faldne kolonne.

den ændrede tabel bevarer sit objekt-ID.

Drop kolonne operationer kan være hurtig, fordi disse katalog-niveau ændringer ikke kræver data reorganisering, så Vertica kan hurtigt genvinde disk opbevaring.

begrænsninger

  • du kan ikke slippe eller ændre en primær nøglekolonne eller en kolonne, der deltager i tabelpartitioneringsklausulen.
  • du kan ikke slippe den første kolonne i en projektionssorteringsrækkefølge eller kolonner, der deltager i et projektionssegmenteringsudtryk.
  • alle noder skal være op.
  • du kan ikke slippe en kolonne, der er knyttet til en adgangspolitik. Forsøg på at gøre det giver følgende fejl:
    ERROR 6482: Failed to parse Access Policies for table "t1"

brug af kaskade til at tvinge en dråbe

Hvis tabelkolonnen til at falde har afhængigheder, skal du kvalificereDROP COLUMNklausul medCASCADE valgmulighed. Målkolonnen kan f.eks. være angivet i en projektionssorteringsrækkefølge. I dette og andre tilfælde håndterer DROP COLUMN…CASCADE afhængigheden ved at omorganisere katalogdefinitioner eller droppe en projektion. I alle tilfælde CASCADE udfører den minimale omorganisering, der kræves for at droppe kolonnen.

brug CASCADE for at slippe en kolonne med følgende afhængigheder:

Vertica afkorter projektionssorteringsrækkefølge til og med projektionen, der er faldet uden indflydelse på fysisk lagring for andre kolonner, og dropper derefter den angivne kolonne. Hvis en projektions kolonner f.eks. er i sorteringsrækkefølge (A,b,c), forårsager det at droppe kolonne B, at projektionens sorteringsrækkefølge er lige (A) og udelader kolonne (C).

droppet kolonneafhængighed CASCADE behavior

enhver begrænsning

Vertica dropper kolonnen, når en fremmed nøglebegrænsning afhænger af en unik eller primær nøglebegrænsning på de refererede kolonner.

specificeret i projektionssorteringsrækkefølge

angivet i et projektionssegmenteringsudtryk

kolonnen, der skal droppes, er integreret i projektionsdefinitionen. Hvis det er muligt, falder Vertica projektionen, så længe det ikke kompromitterer K-safety; ellers ruller transaktionen tilbage.

refereret som standardværdi for en anden kolonne

se droppe en kolonne refereret som standard nedenfor.

droppe en kolonne, der henvises til som standard

du vil måske slippe en tabelkolonne, der henvises til af en anden kolonne som standardværdi. For eksempel er følgende tabel defineret med to kolonner, a og b:, hvor b får sin standardværdi fra kolonne a:

=> Opret tabel h (a int) usegmenteret alle noder;Opret tabel=> alter tabel Tilføj kolonne B int standard a;alter tabel

i dette tilfælde dropper kolonne a kræver følgende procedure:

  1. Fjern standardafhængigheden gennemALTER COLUMN..DROP DEFAULT:
    =>ALTER TABLE ALTER COLUMN b DROP DEFAULT;
  2. Opret en erstatningssuperprojektion for måltabellen, hvis en eller begge af følgende betingelser er sande:
  • målkolonnen er tabellens første sorteringsrækkefølge kolonne. Hvis tabellen ikke har nogen eksplicit sorteringsrækkefølge, angiver standardsorteringsrækkefølgen den første tabelkolonne som den første sorteringsrækkefølge kolonne. I dette tilfælde skal den nye superprojektion angive en sorteringsrækkefølge, der udelukker målkolonnen.
  • hvis tabellen er segmenteret, angives målkolonnen i segmenteringsudtrykket. I dette tilfælde skal den nye superprojektion angive et segmenteringsudtryk, der udelukker målkolonnen.

i betragtning af det foregående eksempel har tabelx en standard sorteringsrækkefølge af (A, b). Fordi kolonne a er bordets første sorteringsrækkefølge kolonne, skal du oprette en erstatning superprojektion, der er sorteret 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:

    • dropper den oprindelige superprojektion til tabelxx_super).
    • opdaterer udskiftningen superprojektion x_p1ved at droppe kolonnea.

    eksempler

    følgende række kommandoer falder med succes en bytea datatype kolonne:

    = > Opret tabel t (h BYTEA(65000), y BYTEA, å 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 

    den følgende række kommandoer forsøger at droppe en FLOAT(8) kolonne og mislykkes, fordi der ikke er nok fremskrivninger til at opretholde K-sikkerhed.plads=”bevare”>=>Opret tabel t (flyde(8),y flyde(08));Opret tabel=>ALTER tabel t DROP kolonne y begrænse;ALTER tabel=>vælg y fra t;fejl 2624:kolonne “y” findes ikke=>Alter Table t drop kaskade;rollback 2409: kan ikke slippe flere kolonner i T=>drop table t Cascade;



    Skriv et svar

    Din e-mailadresse vil ikke blive publiceret.