ADD COLUMN
Detta formulär lägger till en ny kolumn till tabellen, med samma syntax som CREATE TABLE.
DROP COLUMN
Detta formulär tar bort en kolumn från en tabell. Index och tabellbegränsningar som berör kolumnen tas också bort automatiskt. Du måste ange CASCADE om något utanför tabellen är beroende av kolumnen, t.ex. referenser till främmande nycklar eller vyer. Om IF EXISTS anges och kolumnen inte finns, uppstår inget fel. I detta fall utfärdas istället ett meddelande.
SET DATA TYPE
Detta formulär ändrar typen för en kolumn i en tabell. Index och enkla tabellbegränsningar som involverar kolumnen konverteras automatiskt för att använda den nya kolumntypen genom att det ursprungligen levererade uttrycket repareras. Den valfria COLLATE-klausulen anger en kollation för den nya kolumnen; om den utelämnas är kollation standard för den nya kolumntypen. Den valfria USING-klausulen anger hur det nya kolumnvärdet ska beräknas från det gamla; om den utelämnas är standardkonverteringen densamma som en tilldelningsomvandling från den gamla datatypen till den nya. En USING-klausul måste anges om det inte finns någon implicit eller tilldelningsmässig kastning från den gamla till den nya typen.
SET/DROP DEFAULT
Dessa formulär anger eller tar bort standardvärdet för en kolumn. Standardvärdena gäller endast för efterföljande INSERT-kommandon; de leder inte till att rader som redan finns i tabellen ändras. Standardvärden kan också skapas för vyer, i vilket fall de infogas i INSERT-anvisningar för vyn innan vyns ON INSERT-regel tillämpas.
SET/DROP NOT NULL
Dessa formulär ändrar om en kolumn är markerad för att tillåta nollvärden eller för att avvisa nollvärden. Du kan endast använda SET NOT NULL när kolumnen inte innehåller några nollvärden.
SET STATISTICS
Detta formulär anger målet för insamling av statistik per kolumn för efterföljande ANALYZE-operationer. Målet kan ställas in i intervallet 0 till 10000; alternativt kan du ställa in det till -1 för att återgå till att använda systemets standardstatistikmål (default_statistics_target). För mer information om användningen av statistik av PostgreSQLs frågeplanerare, se avsnitt 14.2.
SET ( attribute_option = value )
RESET ( attribute_option )
Detta formulär ställer in eller återställer per-attribut-alternativ. För närvarande är de enda definierade alternativen per attribut n_distinct och n_distinct_inherited, som åsidosätter de uppskattningar av antalet distinkta värden som görs av efterföljande ANALYZE-operationer. n_distinct påverkar statistiken för själva tabellen, medan n_distinct_inherited påverkar statistiken som samlas in för tabellen plus dess arvsbarn. När ANALYZE är satt till ett positivt värde antar ANALYZE att kolumnen innehåller exakt det angivna antalet distinkta icke-nollvärden. När det sätts till ett negativt värde, som måste vara större än eller lika med -1, antar ANALYZE att antalet distinkta icke-nollvärden i kolumnen är linjärt i tabellens storlek. Det exakta antalet ska beräknas genom att multiplicera den uppskattade tabellstorleken med det absoluta värdet av det angivna talet. Ett värde på -1 innebär till exempel att alla värden i kolumnen är distinkta, medan ett värde på -0,5 innebär att varje värde förekommer två gånger i genomsnitt. Detta kan vara användbart när tabellens storlek ändras med tiden, eftersom multiplikationen med antalet rader i tabellen inte utförs förrän vid planering av frågor. Ange värdet 0 för att återgå till att uppskatta antalet distinkta värden normalt. Mer information om hur PostgreSQL:s frågeplanerare använder statistik finns i avsnitt 14.2.
SET STORAGE
Detta formulär anger lagringsläget för en kolumn. Detta styr om den här kolumnen hålls inline eller i en sekundär TOAST-tabell och om data ska komprimeras eller inte. PLAIN måste användas för värden med fast längd, t.ex. heltal, och är inline, okomprimerad. MAIN är för inline, komprimerbara data. EXTERNAL är för externa, okomprimerade data och EXTENDED är för externa, komprimerade data. EXTENDED är standard för de flesta datatyper som har stöd för icke-PLAIN-lagring. Användning av EXTERNAL gör att understrängningsoperationer på mycket stora text- och bytevärden går snabbare, men det innebär ett ökat lagringsutrymme. Observera att SET STORAGE i sig inte ändrar något i tabellen, utan bara fastställer den strategi som ska följas vid framtida tabelluppdateringar. Se avsnitt 55.2 för mer information.
ADD table_constraint
Detta formulär lägger till en ny begränsning till en tabell genom att använda samma syntax som CREATE TABLE, plus alternativet NOT VALID, vilket för närvarande endast är tillåtet för begränsningar med främmande nycklar. Om begränsningen är markerad som NOT VALID, kan den potentiellt långa inledande kontrollen för att kontrollera att alla rader i tabellen uppfyller begränsningen hoppas över. Begränsningen kommer fortfarande att tillämpas på efterföljande infogningar eller uppdateringar (dvs. de misslyckas om det inte finns en matchande rad i den refererade tabellen). Men databasen kommer inte att anta att begränsningen gäller för alla rader i tabellen förrän den valideras med alternativet VALIDATE CONSTRAINT.
ADD table_constraint_using_index
Detta formulär lägger till en ny PRIMARY KEY- eller UNIQUE-begränsning till en tabell baserat på ett befintligt unikt index. Alla kolumner i indexet kommer att ingå i begränsningen.
Indexet kan inte ha uttryckskolumner eller vara ett partiellt index. Det måste också vara ett b-tree-index med standardsortering. Dessa begränsningar säkerställer att indexet är likvärdigt med ett index som skulle byggas av ett vanligt ADD PRIMARY KEY- eller ADD UNIQUE-kommando.
Om PRIMARY KEY anges och indexets kolumner inte redan är markerade NOT NULL, kommer detta kommando att försöka göra ALTER COLUMN SET NOT NULL mot varje sådan kolumn. Detta kräver en fullständig genomsökning av tabellen för att kontrollera att kolumnen/kolumnerna inte innehåller några nollor. I alla andra fall är detta en snabb operation.
Om ett begränsningsnamn anges kommer indexet att byta namn för att matcha begränsningsnamnet. I annat fall kommer begränsningen att få samma namn som indexet.
När det här kommandot har utförts ”ägs” indexet av begränsningen, på samma sätt som om indexet hade byggts upp med ett vanligt ADD PRIMARY KEY- eller ADD UNIQUE-kommando. Om begränsningen tas bort kommer indexet också att försvinna.
Anmärkning: Att lägga till en begränsning med hjälp av ett befintligt index kan vara till hjälp i situationer där en ny begränsning måste läggas till utan att blockera tabelluppdateringar under en längre tid. För att göra det skapar du indexet med CREATE INDEX CONCURRENTLY och installerar det sedan som en officiell begränsning med den här syntaxen. Se exemplet nedan.
VALIDATE CONSTRAINT
Detta formulär validerar en begränsning av en främmande nyckel som tidigare skapats som NOT VALID, genom att skanna tabellen för att se till att det inte finns några oöverensstämmande rader. Inget händer om begränsningen redan är markerad som giltig.
Validering kan vara en lång process på större tabeller och kräver för närvarande en ACCESS EXCLUSIVE-låsning. Värdet av att separera valideringen från den ursprungliga skapelsen är att du kan skjuta upp valideringen till mindre hektiska tider, eller att den kan användas för att ge extra tid för att korrigera redan existerande fel samtidigt som nya fel förhindras.
DROP CONSTRAINT
Detta formulär tar bort den angivna begränsningen på en tabell. Om IF EXISTS har angetts och begränsningen inte finns, skickas inget fel. I detta fall utfärdas istället ett meddelande.
DISABLE/ENABLE TRIGGER
Dessa formulär konfigurerar utlösaren/utlösarna som tillhör tabellen. En inaktiverad utlösare är fortfarande känd av systemet, men utförs inte när dess utlösande händelse inträffar. För en uppskjuten utlösare kontrolleras aktiveringsstatusen när händelsen inträffar, inte när utlösarfunktionen faktiskt utförs. Man kan inaktivera eller aktivera en enskild utlösare som anges med namn, eller alla utlösare i tabellen, eller endast användarutlösare (det här alternativet utesluter internt genererade utlösare för begränsningar, t.ex. sådana som används för att implementera begränsningar för främmande nycklar eller uppskjutbara begränsningar för entydighet och uteslutning). För att inaktivera eller aktivera internt genererade begränsningsutlösare krävs superanvändarrättigheter; det bör göras med försiktighet eftersom begränsningens integritet naturligtvis inte kan garanteras om utlösarna inte exekveras. Utlösningsmekanismen påverkas också av konfigurationsvariabeln session_replication_role. Utlösare som bara är aktiverade aktiveras när replikeringsrollen är ”origin” (standard) eller ”local”. Utlösare som konfigurerats som ENABLE REPLICA aktiveras endast om sessionen är i läget ”replika”, och utlösare som konfigurerats som ENABLE ALWAYS aktiveras oavsett aktuellt repliklingsläge.
DISABLE/ENABLE RULE
Dessa formulär konfigurerar utlösningen av omskrivningsregler som hör till tabellen. En inaktiverad regel är fortfarande känd för systemet, men tillämpas inte under omskrivning av frågor. Semantiken är densamma som för inaktiverade/aktiverade utlösare. Den här konfigurationen ignoreras för ON SELECT-regler, som alltid tillämpas för att få vyer att fungera även om den aktuella sessionen befinner sig i en replikeringsroll som inte är standard.
CLUSTER
Det här formuläret väljer standardindex för framtida CLUSTER-operationer. Det innebär inte att tabellen verkligen återkluderas.
SET WITHOUT CLUSTER
Detta formulär tar bort den senast använda CLUSTER-indexspecifikationen från tabellen. Detta påverkar framtida klusteroperationer som inte anger något index.
SET WITH OIDS
Detta formulär lägger till en oid-systemkolumn till tabellen (se avsnitt 5.4). Den gör ingenting om tabellen redan har OID:er.
Bemärk att detta inte är likvärdigt med ADD COLUMN oid oid oid; det skulle lägga till en normal kolumn som råkar heta oid, inte en systemkolumn.
SET WITHOUT OIDS
Detta formulär tar bort oid-systemkolumnen från tabellen. Detta är exakt likvärdigt med DROP COLUMN oid RESTRICT, förutom att det inte klagar om det redan inte finns någon oid-kolumn.
SET ( storage_parameter = value )
Detta formulär ändrar en eller flera lagringsparametrar för tabellen. Se Lagringsparametrar för detaljer om de tillgängliga parametrarna. Observera att tabellens innehåll inte ändras omedelbart av det här kommandot; beroende på parametern kan du behöva skriva om tabellen för att få önskad effekt. Det kan göras med VACUUM FULL, CLUSTER eller en av formerna av ALTER TABLE som tvingar fram en omskrivning av tabellen.
Notera: Medan CREATE TABLE tillåter att OIDS specificeras i syntaxen WITH (storage_parameter), behandlar ALTER TABLE inte OIDS som en lagringsparameter. Använd istället formulären SET WITH OIDS och SET WITHOUT OIDS för att ändra OID-status.
RESET ( storage_parameter )
Detta formulär återställer en eller flera lagringsparametrar till sina standardvärden. Precis som med SET kan det behövas en omskrivning av tabellen för att uppdatera tabellen helt och hållet.
INHERIT parent_table
Detta formulär lägger till måltabellen som ett nytt barn till den angivna överordnade tabellen. Därefter kommer förfrågningar mot den överordnade tabellen att inkludera poster i måltabellen. För att läggas till som ett barn måste måltabellen redan innehålla alla samma kolumner som föräldratabellen (den kan också ha ytterligare kolumner). Kolumnerna måste ha matchande datatyper, och om de har NOT NULL-begränsningar i den överordnade tabellen måste de också ha NOT NULL-begränsningar i den underordnade tabellen.
Det måste också finnas matchande begränsningar i den underordnade tabellen för alla CHECK-begränsningar i den överordnade tabellen. För närvarande beaktas inte UNIQUE-, PRIMARY KEY- och FOREIGN KEY-begränsningar, men detta kan komma att ändras i framtiden.
NO INHERIT parent_table
Detta formulär tar bort måltabellen från listan över barn till den angivna överordnade tabellen. Förfrågningar mot den överordnade tabellen kommer inte längre att inkludera poster från måltabellen.
OF type_name
Detta formulär länkar tabellen till en sammansatt typ som om CREATE TABLE OF hade bildat den. Tabellens lista över kolonnnamn och typer måste exakt överensstämma med den sammansatta typens lista; närvaron av en oid-systemkolumn får avvika. Tabellen får inte ärva från någon annan tabell. Dessa begränsningar säkerställer att CREATE TABLE OF skulle tillåta en likvärdig tabelldefinition.
NOT OF
Denna blankett särskiljer en typiserad tabell från dess typ.
OWNER
Denna blankett ändrar ägaren till tabellen, sekvensen eller vyn till den angivna användaren.
SET TABLESPACE
Denna blankett ändrar tabellens tabellutrymme till det angivna tabellutrymmet och flyttar datafilen/datafilen som är associerade med tabellen till det nya tabellutrymmet. Eventuella index för tabellen flyttas inte, men de kan flyttas separat med ytterligare SET TABLESPACE-kommandon. Se även CREATE TABLESPACE.
RENAME
Med RENAME-formulären ändras namnet på en tabell (eller ett index, en sekvens eller en vy) eller namnet på en enskild kolumn i en tabell. Det finns ingen effekt på de lagrade uppgifterna.
SET SCHEMA
Detta formulär flyttar tabellen till ett annat schema. Tillhörande index, begränsningar och sekvenser som ägs av tabellkolumner flyttas också.