Tabelkolonner
Vertica Analytics Platform Version 9.2.
ALTER TABLE…DROP COLUMN
dropper den angivne tabelkolonne og ros-beholderne, der svarer til den faldne kolonne: 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 COLUMN
klausul 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:
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:
- Fjern standardafhængigheden gennem
ALTER COLUMN..DROP DEFAULT
:=>ALTER TABLE ALTER COLUMN b DROP DEFAULT; - 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;
START_REFRESH
:
=> SELECT START_REFRESH(); START_REFRESH---------------------------------------- Starting refresh background process.(1 row)
MAKE_AHM_NOW
:
=> SELECT MAKE_AHM_NOW(); MAKE_AHM_NOW------------------------------- AHM set (New AHM Epoch: 1231)(1 row)
=> ALTER TABLE x DROP COLUMN a CASCADE;
Vertica implementererCASCADE
direktivet som følger:
- dropper den oprindelige superprojektion til tabel
x
x_super
). - opdaterer udskiftningen superprojektion
x_p1
ved 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;