ALTERTABLE

ADD COLUMN

Dit formulier voegt een nieuwe kolom aan de tabel toe, gebruikmakend van dezelfde syntaxis als CREATE TABLE.

DROP COLUMN

Dit formulier verwijdert een kolom uit een tabel. Indexen en tabelrestricties voor de kolom worden automatisch ook verwijderd. U moet CASCADE zeggen als iets buiten de tabel afhankelijk is van de kolom, bijvoorbeeld foreign key referenties of views. Als IF EXISTS wordt opgegeven en de kolom bestaat niet, wordt er geen foutmelding gegeven. In dat geval wordt een mededeling gegeven.

SET DATA TYPE

Dit formulier wijzigt het type van een kolom van een tabel. Indexen en eenvoudige tabelrestricties waarbij de kolom betrokken is, worden automatisch geconverteerd om het nieuwe kolomtype te gebruiken door de oorspronkelijk geleverde expressie opnieuw te parsen. De optionele clausule COLLATE specificeert een kolling voor de nieuwe kolom; indien weggelaten, is de kolling de standaard voor het nieuwe kolomtype. De optionele USING-clausule specificeert hoe de nieuwe kolomwaarde uit de oude moet worden berekend; indien deze weggelaten wordt, is de standaardconversie dezelfde als een toewijzingsafdruk van het oude gegevenstype naar het nieuwe. Er moet een USING-clausule worden gegeven als er geen impliciete of toewijzingsafleiding van het oude naar het nieuwe type is.

SET/DROP DEFAULT

Deze formulieren stellen de standaardwaarde voor een kolom in of verwijderen die. De standaardwaarden gelden alleen voor latere INSERT commando’s; ze veroorzaken geen wijziging van rijen die al in de tabel staan. Standaardwaarden kunnen ook worden gemaakt voor views, in welk geval ze worden ingevoegd in INSERT verklaringen op de view voordat de ON INSERT regel van de view wordt toegepast.

SET/DROP NOT NULL

Deze formulieren veranderen of een kolom is gemarkeerd om null waarden toe te staan of om null waarden te weigeren. U kunt SET NOT NULL alleen gebruiken als de kolom geen nulwaarden bevat.

SET STATISTICS

Dit formulier stelt het doel in voor het verzamelen van statistische gegevens per kolom voor latere ANALYZE-bewerkingen. Het doel kan worden ingesteld tussen 0 en 10000; stel het ook in op -1 om terug te keren naar het standaard statistische doel van het systeem (default_statistics_target). Voor meer informatie over het gebruik van statistieken door de PostgreSQL query planner, zie Paragraaf 14.2.

SET ( attribuut_optie = waarde )
RESET ( attribuut_optie )

Deze vorm stelt per-attribuut opties in of reset ze. Momenteel zijn de enige gedefinieerde per-attribuut opties n_distinct en n_distinct_inherited, die de aantal-van-distinct-waarden schattingen gemaakt door latere ANALYZE operaties overschrijven. n_distinct beïnvloedt de statistieken voor de tabel zelf, terwijl n_distinct_inherited de statistieken verzameld voor de tabel plus zijn inheritance kinderen beïnvloedt. Indien ingesteld op een positieve waarde, zal ANALYZE aannemen dat de kolom precies het opgegeven aantal verschillende niet-nul waarden bevat. Indien ingesteld op een negatieve waarde, die groter of gelijk moet zijn aan -1, zal ANALYZE aannemen dat het aantal verschillende niet-nul waarden in de kolom lineair is met de grootte van de tabel; het exacte aantal dient te worden berekend door de geschatte tabelgrootte te vermenigvuldigen met de absolute waarde van het opgegeven getal. Bijvoorbeeld, een waarde van -1 impliceert dat alle waarden in de kolom verschillend zijn, terwijl een waarde van -0.5 impliceert dat elke waarde gemiddeld tweemaal voorkomt. Dit kan nuttig zijn wanneer de grootte van de tabel in de loop van de tijd verandert, aangezien de vermenigvuldiging met het aantal rijen in de tabel pas wordt uitgevoerd wanneer de query wordt gepland. Specificeer een waarde van 0 om terug te keren naar de normale schatting van het aantal verschillende waarden. Voor meer informatie over het gebruik van statistieken door de PostgreSQL query planner, zie Paragraaf 14.2.

SET STORAGE

Dit formulier stelt de opslag modus voor een kolom in. Dit bepaalt of deze kolom inline of in een secundaire TOAST tabel wordt bewaard, en of de gegevens al dan niet moeten worden gecomprimeerd. PLAIN moet worden gebruikt voor waarden met een vaste lengte, zoals gehele getallen, en is inline, niet-gecomprimeerd. MAIN is voor inline, comprimeerbare gegevens. EXTERNAL is voor externe, niet-gecomprimeerde gegevens, en EXTENDED is voor externe, gecomprimeerde gegevens. EXTENDED is de standaard voor de meeste gegevenstypen die niet-PLAIN opslag ondersteunen. Het gebruik van EXTERNAL zal substring operaties op zeer grote tekst en bytea waarden sneller laten verlopen, ten koste van een grotere opslagruimte. Merk op dat SET STORAGE zelf niets in de tabel verandert, het stelt alleen de strategie in die gevolgd moet worden tijdens toekomstige bijwerkingen van de tabel. Zie Paragraaf 55.2 voor meer informatie.

ADD table_constraint

Dit formulier voegt een nieuwe constraint aan een tabel toe met dezelfde syntaxis als CREATE TABLE, plus de optie NOT VALID, die momenteel alleen is toegestaan voor foreign key constraints. Als de constraint is gemarkeerd met NOT VALID, wordt de mogelijk langdurige initiële controle om te controleren of alle rijen in de tabel aan de constraint voldoen, overgeslagen. De beperking zal nog steeds afgedwongen worden tegen volgende inserts of updates (dat wil zeggen, ze zullen mislukken tenzij er een overeenkomstige rij is in de tabel waarnaar verwezen wordt). Maar de database zal niet aannemen dat de beperking geldt voor alle rijen in de tabel, totdat het wordt gevalideerd met behulp van de VALIDATE CONSTRAINT optie.

ADD table_constraint_using_index

Dit formulier voegt een nieuwe PRIMARY KEY of UNIQUE beperking toe aan een tabel op basis van een bestaande unieke index. Alle kolommen van de index worden in de restrictie opgenomen.

De index kan geen expressiekolommen hebben noch een partiële index zijn. Ook moet het een b-tree index zijn met standaard sorteervolgorde. Deze beperkingen zorgen ervoor dat de index gelijkwaardig is aan een index die zou worden opgebouwd door een gewoon ADD PRIMARY KEY of ADD UNIQUE commando.

Indien PRIMARY KEY is gespecificeerd, en de kolommen van de index nog niet als NOT NULL zijn gemarkeerd, zal dit commando proberen ALTER COLUMN SET NOT NULL uit te voeren voor elke kolom in kwestie. Dat vereist een volledige tabel scan om te verifiëren dat de kolom(men) geen nulls bevatten. In alle andere gevallen is dit een snelle operatie.

Als een constraint-naam is opgegeven, wordt de index hernoemd zodat hij overeenkomt met de constraint-naam. Anders krijgt de constraint dezelfde naam als de index.

Na uitvoering van dit commando is de index “eigendom” van de constraint, op dezelfde manier als wanneer de index zou zijn opgebouwd met een gewoon ADD PRIMARY KEY of ADD UNIQUE commando. In het bijzonder, het laten vallen van de constraint zal de index ook laten verdwijnen.

Note: Het toevoegen van een constraint met behulp van een bestaande index kan handig zijn in situaties waar een nieuwe constraint moet worden toegevoegd zonder tabelupdates voor lange tijd te blokkeren. Om dat te doen, maak je de index met CREATE INDEX CONCURRENTLY, en installeer je hem vervolgens als een officiële constraint met deze syntaxis. Zie het voorbeeld hieronder.

VALIDATE CONSTRAINT

Deze vorm valideert een foreign key constraint die eerder is gemaakt als NOT VALID, door de tabel te scannen om er zeker van te zijn dat er geen ongematchte rijen zijn. Er gebeurt niets als de constraint al is gemarkeerd als geldig.

Validatie kan een lang proces zijn op grotere tabellen en vereist momenteel een ACCESS EXCLUSIVE slot. De waarde van het scheiden van validatie en initiële creatie is dat u validatie kunt uitstellen tot minder drukke tijden, of kan worden gebruikt om extra tijd te geven om reeds bestaande fouten te corrigeren en tegelijkertijd nieuwe fouten te voorkomen.

DROP CONSTRAINT

Dit formulier laat de gespecificeerde constraint op een tabel vallen. Als IF EXISTS is opgegeven en de constraint bestaat niet, wordt er geen fout gegooid. In dat geval wordt een mededeling gegeven.

TRIGGER DISABLE/ENABLE

Deze formulieren configureren het afgaan van trigger(s) die bij de tabel horen. Een uitgeschakelde trigger is nog steeds bekend bij het systeem, maar wordt niet uitgevoerd wanneer de triggerende gebeurtenis optreedt. Bij een uitgestelde trigger wordt de vrijgave gecontroleerd wanneer de gebeurtenis optreedt, niet wanneer de triggerfunctie daadwerkelijk wordt uitgevoerd. Men kan een enkele trigger met naam deactiveren of deactiveren, of alle triggers op de tabel, of alleen gebruikerstriggers (deze optie sluit intern gegenereerde constraintriggers uit, zoals degene die gebruikt worden om foreign key constraints of uitstelbare uniciteits- en exclusie constraints te implementeren). Het in- of uitschakelen van intern gegenereerde constraint triggers vereist superuser rechten; het moet met voorzichtigheid gedaan worden omdat de integriteit van de constraint natuurlijk niet gegarandeerd kan worden als de triggers niet uitgevoerd worden. Het triggermechanisme wordt ook beïnvloed door de configuratievariabele session_replication_role. Eenvoudig ingeschakelde triggers zullen afgaan wanneer de replicatie rol “origin” (de standaard) of “local” is. Triggers geconfigureerd als ENABLE REPLICA zullen alleen vuren als de sessie in “replica” mode is, en triggers geconfigureerd als ENABLE ALWAYS zullen vuren ongeacht de huidige replicatie mode.

DISABLE/ENABLE RULE

Deze vormen configureren het vuren van herschrijf regels die bij de tabel horen. Een uitgeschakelde regel is nog steeds bekend bij het systeem, maar wordt niet toegepast tijdens het herschrijven van de query. De semantiek is als voor disabled/enabled triggers. Deze configuratie wordt genegeerd voor ON SELECT regels, die altijd worden toegepast om views werkend te houden, zelfs als de huidige sessie in een niet-standaard replicatie rol zit.

CLUSTER

Deze vorm selecteert de standaard index voor toekomstige CLUSTER operaties. De tabel wordt niet opnieuw geclusterd.

SET WITHOUT CLUSTER

Deze vorm verwijdert de meest recent gebruikte CLUSTER index specificatie uit de tabel. Dit beïnvloedt toekomstige cluster operaties die geen index specificeren.

SET WITH OIDS

Dit formulier voegt een oid systeem kolom toe aan de tabel (zie Paragraaf 5.4). Het doet niets als de tabel al OID’s heeft.

Merk op dat dit niet gelijk is aan ADD COLUMN oid oid; dat zou een normale kolom toevoegen die toevallig oid heet, niet een systeem kolom.

SET WITHOUT OIDS

Deze vorm verwijdert de oid systeem kolom uit de tabel. Dit is precies gelijk aan DROP COLUMN oid RESTRICT, behalve dat het niet zal klagen als er al geen oid kolom is.

SET ( storage_parameter = value )

Dit formulier wijzigt een of meer opslag parameters voor de tabel. Zie Opslagparameters voor details over de beschikbare parameters. Merk op dat de inhoud van de tabel niet onmiddellijk zal gewijzigd worden door dit commando; afhankelijk van de parameter moet je misschien de tabel herschrijven om de gewenste effecten te krijgen. Dat kan met VACUUM FULL, CLUSTER of een van de vormen van ALTER TABLE die een tabelherschrijving afdwingt.

Note: Terwijl CREATE TABLE toestaat dat OIDS wordt opgegeven in de WITH (storage_parameter) syntaxis, behandelt ALTER TABLE OIDS niet als een opslagparameter. Gebruik in plaats daarvan de formulieren SET WITH OIDS en SET WITHOUT OIDS om de OID-status te wijzigen.

RESET ( storage_parameter )

Met dit formulier worden een of meer opslagparameters op hun standaardwaarden teruggezet. Net als bij SET, kan een tabel herschrijven nodig zijn om de tabel volledig bij te werken.

INHERIT parent_table

Dit formulier voegt de doeltabel toe als een nieuw kind van de gespecificeerde parent tabel. Vervolgens zullen queries tegen de parent tabel records van de target tabel bevatten. Om als een kind toegevoegd te worden, moet de target tabel reeds dezelfde kolommen bevatten als de ouder (het kan ook bijkomende kolommen hebben). De kolommen moeten overeenkomende datatypes hebben, en als ze NOT NULL constraints hebben in de ouder, dan moeten ze ook NOT NULL constraints hebben in het kind.

Er moeten ook overeenkomende kind-tabel constraints zijn voor alle CHECK constraints van de ouder. Momenteel worden UNIQUE, PRIMARY KEY, en FOREIGN KEY constraints niet in beschouwing genomen, maar dit kan in de toekomst veranderen.

NO INHERIT parent_table

Dit formulier verwijdert de target tabel uit de lijst van kinderen van de gespecificeerde parent tabel. Queries tegen de parent tabel zullen niet langer records uit de target tabel bevatten.

OF type_name

Dit formulier koppelt de tabel aan een samengesteld type alsof CREATE TABLE OF deze had gevormd. De lijst van kolomnamen en types van de tabel moet precies overeenkomen met die van het samengestelde type; de aanwezigheid van een systeemkolom oid mag verschillen. De tabel mag niet erven van een andere tabel. Deze beperkingen zorgen ervoor dat CREATE TABLE OF een gelijkwaardige tabeldefinitie mogelijk maakt.

NOT OF

Dit formulier maakt een getypte tabel los van zijn type.

OWNER

Dit formulier wijzigt de eigenaar van de tabel, sequentie of view in de gespecificeerde gebruiker.

SET TABLESPACE

Dit formulier wijzigt de tablespace van de tabel in de gespecificeerde tablespace en verplaatst het (de) gegevensbestand(en) die aan de tabel zijn gekoppeld naar de nieuwe tablespace. Eventuele indexen op de tabel worden niet verplaatst; maar die kunnen apart worden verplaatst met aanvullende SET TABLESPACE commando’s. Zie ook CREATE TABLESPACE.

RENAME

De RENAME-formulieren wijzigen de naam van een tabel (of een index, sequentie of view) of de naam van een individuele kolom in een tabel. Er is geen effect op de opgeslagen gegevens.

SET SCHEMA

Dit formulier verplaatst de tabel naar een ander schema. Bijbehorende indexen, constraints, en sequenties die eigendom zijn van tabel kolommen worden ook verplaatst.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.