Dropping tabelkolommen

Vertica Analytics Platform Versie 9.2.x-Documentatie

ALTER TABLE…DROP COLUMN daalt de opgegeven tabel kolom en de ROS containers die overeenkomen met de verwijderde column:

ALTER TABLE tafel NEERZETTEN kolom 

Na het neerzetten van de bewerking is voltooid, worden gegevens een back-up van het huidige tijdperk verder herstelt, zonder de kolom. Gegevens die zijn hersteld van een back-up die voorafgaat aan de huidige epoch voeg de tabelkolom opnieuw toe. Omdat drop-bewerkingen objectopslag en catalogusdefinities (tabelgeschiedenis) fysiek uit de tabel verwijderen, geven AT EPOCH (historische) queries niets terug voor de gevallen kolom.

de gewijzigde tabel behoudt zijn object-ID.

Drop column operaties kunnen snel zijn omdat deze wijzigingen op catalogusniveau geen reorganisatie van gegevens vereisen, zodat Vertica snel schijfopslag kan terugwinnen.

restricties

  • u kunt een kolom met primaire sleutel of een kolom die deelneemt aan de tabelpartitionering-clausule niet laten vallen of wijzigen.
  • u kunt de eerste kolom van een projectiesorteervolgorde niet laten vallen, of kolommen die deelnemen aan een projectiesegmentatie-expressie.
  • alle knopen moeten omhoog zijn.
  • u kunt geen kolom laten vallen die is gekoppeld aan een toegangsbeleid. Pogingen om dit te doen leiden tot de volgende fout:
    ERROR 6482: Failed to parse Access Policies for table "t1"

CASCADE gebruiken om een Drop

te forceren als de tabelkolom afhankelijkheden heeft, moet u de DROP COLUMN clausule kwalificeren met de CASCADE optie. Bijvoorbeeld, de doelkolom kan worden opgegeven in een projectie sorteervolgorde. In deze en andere gevallen behandelt DROP COLUMN…CASCADE de afhankelijkheid door catalogusdefinities te reorganiseren of een projectie te laten vallen. In alle gevallen voert CASCADE de minimale reorganisatie uit die nodig is om de kolom te laten vallen.

Gebruik CASCADE om het neerzetten van een kolom met de volgende afhankelijkheden:

Gedaald kolom afhankelijkheid TRAPSGEWIJS gedrag

Een beperking

Vertica daalt de kolom als een FOREIGN KEY constraint is afhankelijk van een UNIEKE of PRIMARY KEY constraint op de kolommen waarnaar wordt verwezen.

gespecificeerd in projectiesorteervolgorde

Vertica verkort de projectiesorteervolgorde tot en met de projectie die wordt gedropt zonder impact op de fysieke opslag voor andere kolommen en laat de opgegeven kolom vervolgens vallen. Bijvoorbeeld als de kolommen van een projectie in sorteervolgorde (a,b,c) staan, zorgt het laten vallen van kolom b ervoor dat de sorteervolgorde van de projectie gewoon (a) is, waarbij kolom (c) wordt weggelaten.

gespecificeerd in een projectie segmentatie expressie

De te laten kolom is integraal voor de projectie definitie. Indien mogelijk laat Vertica de projectie vallen zolang dit K-safety niet in gevaar brengt; anders rolt de transactie terug.

als standaardwaarde van een andere kolom

zie Een kolom waarnaar wordt verwezen als standaard laten vallen hieronder.

een kolom laten vallen waarnaar wordt verwezen als standaard

u kunt een tabelkolom laten vallen die door een andere kolom wordt verwezen als standaardwaarde. Bijvoorbeeld in de volgende tabel wordt gedefinieerd met twee kolommen, a en b: waar b krijgt standaard de waarde uit kolom a:

=> CREATE TABLE x (int) ONGESEGMENTEERD ALLE KNOOPPUNTEN;CREATE TABLE=> ALTER TABLE x TOEVOEGEN KOLOM b int STANDAARD a;ALTER TABLE

In dit geval, vallen in de kolom a vereist de volgende procedure:

  1. verwijder de standaardafhankelijkheid via ALTER COLUMN..DROP DEFAULT:
    => ALTER TABLE X ALTER COLUMN b DROP DEFAULT;
  2. Maak een vervangende superprojectie voor de doeltabel als een of beide van de volgende voorwaarden waar is:
  • De doelkolom is de kolom met de eerste sorteervolgorde van de tabel. Als de tabel geen expliciete sorteervolgorde heeft, specificeert de standaard sorteervolgorde van de tabel de eerste kolom van de tabel als de eerste kolom van de sorteervolgorde. In dit geval moet de nieuwe superprojectie een sorteervolgorde opgeven die de doelkolom uitsluit.
  • als de tabel gesegmenteerd is, wordt de doelkolom gespecificeerd in de segmentatie-expressie. In dit geval moet de nieuwe superprojectie een segmentatie-expressie specificeren die de doelkolom uitsluit.

in het vorige voorbeeld heeft tabel x een standaard sorteervolgorde van (A, b). Omdat kolom a de kolom eerste sorteervolgorde van de tabel is, moet u een vervangende superprojectie aanmaken die gesorteerd is op kolom 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 implementeert deCASCADE richtlijn als volgt:

    • laat de oorspronkelijke superprojectie voor tabelxx_super).
    • werkt de vervangende superprojectiex_p1 bij door kolomate laten vallen.

    voorbeelden

    De volgende reeks opdrachten laat met succes een kolom van het gegevenstype BYTEA vallen:

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

    de volgende reeks commando ‘ s probeert een kolom FLOAT(8) te laten vallen en mislukt omdat er niet genoeg projecties zijn om K-safety te behouden.

    => CREATE TABLE t (x FLOAT(8),FLOAT y(08));CREATE TABLE=> ALTER TABLE t DROP KOLOM y BEPERKEN;ALTER TABLE=> SELECTEER y VAN t;FOUT 2624: De kolom "y" bestaat niet=> ALTER TABLE t DROP x CASCADE;TERUGDRAAIEN 2409: Geen druppel meer kolommen in t=> DROP TABLE t CASCADE;



    Geef een antwoord

    Het e-mailadres wordt niet gepubliceerd.