ALTERTABLE

ADD COLUMN

Denne formular tilføjer en ny kolonne til tabellen ved hjælp af samme syntaks som CREATE TABLE.

DROP COLUMN

Denne formular sletter en kolonne fra en tabel. Indekser og tabelbegrænsninger, der involverer kolonnen, vil også automatisk blive slettet. Du skal sige CASCADE, hvis noget uden for tabellen afhænger af kolonnen, f.eks. foreign key-referencer eller views. Hvis IF EXISTS er angivet, og kolonnen ikke eksisterer, opstår der ingen fejl. I dette tilfælde udstedes der i stedet en meddelelse.

SET DATA TYPE

Denne formular ændrer typen for en kolonne i en tabel. Indekser og simple tabelbegrænsninger, der involverer kolonnen, vil automatisk blive konverteret til at bruge den nye kolonnetype ved at reparere det oprindeligt leverede udtryk. Den valgfrie COLLATE-klausul angiver en kollationering for den nye kolonne; hvis den udelades, er kollationeringen standard for den nye kolonnetype. Den valgfrie USING-klausul angiver, hvordan den nye kolonneværdi skal beregnes ud fra den gamle; hvis den udelades, er standardkonverteringen den samme som en tildelingscast fra den gamle datatype til den nye. Der skal angives en USING-klausul, hvis der ikke er nogen implicit eller tildelingscast fra den gamle til den nye type.

SET/DROP DEFAULT

Disse formularer indstiller eller fjerner standardværdien for en kolonne. Standardværdierne gælder kun for efterfølgende INSERT-kommandoer; de medfører ikke, at rækker, der allerede findes i tabellen, ændres. Standardværdier kan også oprettes for visninger, i hvilket tilfælde de indsættes i INSERT-meddelelser på visningen, før visningens ON INSERT-regel anvendes.

SET/DROP NOT NULL

Disse formularer ændrer, om en kolonne er markeret til at tillade nulværdier eller til at afvise nulværdier. Du kan kun bruge SET NOT NULL, når kolonnen ikke indeholder nulværdier.

SET STATISTICS

Denne formular indstiller målet for indsamling af statistikker pr. kolonne for efterfølgende ANALYZE-operationer. Målet kan indstilles i intervallet 0 til 10.000. Alternativt kan du indstille det til -1 for at vende tilbage til at bruge systemets standardstatistikmål (default_statistics_target). Du kan finde flere oplysninger om PostgreSQL-forespørgselsplanlæggerens brug af statistik i Afsnit 14.2.

SET ( attribute_option = value )
RESET ( attribute_option )

Denne form sætter eller nulstiller indstillinger pr. attribut. I øjeblikket er de eneste definerede indstillinger pr. attribut n_distinct og n_distinct_inherited, som tilsidesætter de estimater af antal-distinct-værdier, der foretages af efterfølgende ANALYZE-operationer. n_distinct påvirker statistikkerne for selve tabellen, mens n_distinct_inherited påvirker de statistikker, der indsamles for tabellen plus dens arvelige børn. Når ANALYZE er indstillet til en positiv værdi, antager ANALYZE, at kolonnen indeholder præcis det angivne antal forskellige værdier, der ikke er nulværdier. Når den er sat til en negativ værdi, som skal være større end eller lig med -1, antager ANALYZE, at antallet af forskellige nonnull-værdier i kolonnen er lineært i forhold til tabellens størrelse; det nøjagtige antal skal beregnes ved at multiplicere den anslåede tabelstørrelse med den absolutte værdi af det angivne tal. F.eks. betyder en værdi på -1, at alle værdier i kolonnen er forskellige, mens en værdi på -0,5 betyder, at hver værdi optræder to gange i gennemsnit. Dette kan være nyttigt, når tabellens størrelse ændrer sig over tid, da multiplikationen med antallet af rækker i tabellen ikke udføres før forespørgselsplanlægningstidspunktet. Angiv en værdi på 0 for at vende tilbage til normal estimering af antallet af forskellige værdier. Du kan finde flere oplysninger om PostgreSQL-forespørgselsplanlæggerens brug af statistikker i Afsnit 14.2.

SET STORAGE

Denne formular indstiller lagringstilstanden for en kolonne. Dette styrer, om denne kolonne skal holdes inline eller i en sekundær TOAST-tabel, og om dataene skal komprimeres eller ej. PLAIN skal bruges til værdier med fast længde, f.eks. heltal, og er inline, ikke komprimeret. MAIN er for inline-data, der kan komprimeres. EXTERNAL er for eksterne, ukomprimerede data, og EXTENDED er for eksterne, komprimerede data. EXTENDED er standard for de fleste datatyper, der understøtter ikke-PLAIN-lagring. Brug af EXTERNAL vil få delstrengsoperationer på meget store tekst- og bytea-værdier til at køre hurtigere, til gengæld med straf for øget lagerplads. Bemærk, at SET STORAGE ikke i sig selv ændrer noget i tabellen, men blot indstiller den strategi, der skal følges ved fremtidige opdateringer af tabellen. Se afsnit 55.2 for flere oplysninger.

ADD table_constraint

Denne form tilføjer en ny begrænsning til en tabel ved hjælp af den samme syntaks som CREATE TABLE, plus indstillingen NOT VALID, som i øjeblikket kun er tilladt for fremmednøglebegrænsninger. Hvis begrænsningen er markeret NOT VALID, springes den potentielt lange indledende kontrol for at kontrollere, at alle rækker i tabellen opfylder begrænsningen, over. Begrænsningen vil stadig blive håndhævet over for efterfølgende indsættelser eller opdateringer (dvs. de vil mislykkes, medmindre der er en matchende række i den refererede tabel). Men databasen vil ikke antage, at begrænsningen gælder for alle rækker i tabellen, før den er valideret ved hjælp af VALIDATE CONSTRAINT-indstillingen.

ADD table_constraint_using_index

Denne formular tilføjer en ny PRIMARY KEY- eller UNIQUE-begrænsning til en tabel baseret på et eksisterende unikt indeks. Alle kolonnerne i indekset vil blive inkluderet i begrænsningen.

Indekset kan ikke have udtrykskolonner eller være et delvist indeks. Det skal også være et b-tree-indeks med standardsortering. Disse begrænsninger sikrer, at indekset svarer til et indeks, der ville blive opbygget af en almindelig ADD PRIMARY KEY- eller ADD UNIQUE-kommando.

Hvis PRIMARY KEY er angivet, og indeksets kolonner ikke allerede er markeret NOT NULL, vil denne kommando forsøge at udføre ALTER COLUMN SET NOT NULL mod hver af disse kolonner. Det kræver en fuld scanning af tabellen for at kontrollere, at kolonnen/kolonnerne ikke indeholder nogen nulls. I alle andre tilfælde er dette en hurtig operation.

Hvis der er angivet et begrænsningsnavn, vil indekset blive omdøbt, så det passer til begrænsningsnavnet. Ellers vil begrænsningen få samme navn som indekset.

Når denne kommando er udført, er indekset “ejet” af begrænsningen på samme måde, som hvis indekset var blevet oprettet ved en almindelig ADD PRIMARY KEY- eller ADD UNIQUE-kommando. Især vil en fjernelse af begrænsningen også få indekset til at forsvinde.

Bemærkning: Tilføjelse af en begrænsning ved hjælp af et eksisterende indeks kan være nyttigt i situationer, hvor en ny begrænsning skal tilføjes uden at blokere opdateringer af tabellen i lang tid. Det gør du ved at oprette indekset ved hjælp af CREATE INDEX CONCURRENTLY og derefter installere det som en officiel begrænsning ved hjælp af denne syntaks. Se eksemplet nedenfor.

VALIDATE CONSTRAINT

Denne formular validerer en fremmednøglebegrænsning, der tidligere blev oprettet som NOT VALID, ved at scanne tabellen for at sikre, at der ikke er nogen uoverensstemmende rækker. Der sker intet, hvis begrænsningen allerede er markeret som gyldig.

Validering kan være en lang proces på større tabeller og kræver i øjeblikket en ACCESS EXCLUSIVE-lås. Værdien af at adskille valideringen fra den oprindelige oprettelse er, at du kan udskyde valideringen til mindre travle tidspunkter eller kan bruges til at give ekstra tid til at rette allerede eksisterende fejl og samtidig forhindre nye fejl.

DROP CONSTRAINT

Denne formular sletter den angivne begrænsning på et bord. Hvis IF EXISTS er angivet, og begrænsningen ikke eksisterer, opstår der ingen fejl. I dette tilfælde udstedes der i stedet en meddelelse.

DISABLE/ENABLE TRIGGER

Disse formularer konfigurerer udløsningen af trigger(s), der tilhører tabellen. En deaktiveret trigger er stadig kendt af systemet, men den udføres ikke, når dens udløsende begivenhed indtræffer. For en udskudt udløser kontrolleres aktiveringsstatus, når hændelsen indtræffer, og ikke når udløserfunktionen faktisk udføres. Man kan deaktivere eller aktivere en enkelt udløser, der er angivet ved navn, eller alle udløsere i tabellen, eller kun brugerudløsere (denne mulighed udelukker internt genererede begrænsningstriggere, f.eks. dem, der bruges til at implementere fremmednøglebegrænsninger eller udskydelige entydigheds- og udelukkelsesbegrænsninger). Deaktivering eller aktivering af internt genererede begrænsningstriggers kræver superbrugerrettigheder; det bør gøres med forsigtighed, da begrænsningens integritet naturligvis ikke kan garanteres, hvis triggerne ikke udføres. Udløsningsmekanismen for udløsere påvirkes også af konfigurationsvariablen session_replication_role. Triggere, der blot er aktiveret, vil blive udløst, når replikationsrollen er “origin” (standard) eller “local”. Triggere, der er konfigureret som ENABLE REPLICA, udløses kun, hvis sessionen er i “replika”-tilstand, og triggere, der er konfigureret som ENABLE ALWAYS, udløses uanset den aktuelle replikationstilstand.

DISABLE/ENABLE RULE

Disse former konfigurerer udløsningen af omskrivningsregler, der hører til tabellen. En deaktiveret regel er stadig kendt af systemet, men anvendes ikke under omskrivning af forespørgsler. Semantikken er den samme som for deaktiverede/aktiverede udløsere. Denne konfiguration ignoreres for ON SELECT-regler, som altid anvendes for at få visninger til at fungere, selv om den aktuelle session er i en ikke-default replikeringsrolle.

CLUSTER

Denne formular vælger standardindekset for fremtidige CLUSTER-operationer. Den genclusterer faktisk ikke tabellen.

SET WITHOUT CLUSTER

Denne formular fjerner den senest anvendte CLUSTER-indeksangivelse fra tabellen. Dette påvirker fremtidige cluster-operationer, der ikke angiver et indeks.

SET WITH OIDS

Denne formular tilføjer en oid-systemkolonne til tabellen (se afsnit 5.4). Den gør intet, hvis tabellen allerede har OID’er.

Bemærk, at dette ikke svarer til ADD COLUMN oid oid oid; det ville tilføje en normal kolonne, der tilfældigvis hed oid, ikke en systemkolonne.

SET WITHOUT OIDS

Denne formular fjerner oid-systemkolonnen fra tabellen. Dette svarer nøjagtigt til DROP COLUMN oid RESTRICT, bortset fra at den ikke klager, hvis der ikke allerede er nogen oid-kolonne.

SET ( storage_parameter = value )

Denne formular ændrer en eller flere lagringsparametre for tabellen. Se Lagringsparametre for at få oplysninger om de tilgængelige parametre. Bemærk, at tabellens indhold ikke ændres umiddelbart af denne kommando; afhængigt af parameteren skal du muligvis omskrive tabellen for at få de ønskede virkninger. Det kan gøres med VACUUM FULL, CLUSTER eller en af de former for ALTER TABLE, der fremtvinger en omskrivning af tabellen.

Bemærk: Mens CREATE TABLE gør det muligt at angive OIDS i WITH (storage_parameter)-syntaksen, behandler ALTER TABLE ikke OIDS som en lagringsparameter. Brug i stedet formularerne SET WITH OIDS og SET WITHOUT OIDS til at ændre OID-status.

RESET ( storage_parameter )

Denne formular nulstiller en eller flere lagringsparametre til deres standardværdier. Som med SET kan det være nødvendigt med en tabelomskrivning for at opdatere tabellen fuldstændigt.

INHERIT parent_table

Denne formular tilføjer måltabellen som et nyt barn til den angivne overordnet tabel. Efterfølgende vil forespørgsler mod den overordnede tabel omfatte poster i måltabellen. For at blive tilføjet som et barn skal måltabellen allerede indeholde alle de samme kolonner som forældertabellen (den kan også have yderligere kolonner). Kolonnerne skal have matchende datatyper, og hvis de har NOT NULL-begrænsninger i den overordnede tabel, skal de også have NOT NULL-begrænsninger i den underordnede tabel.

Der skal også være matchende begrænsninger i den underordnede tabel for alle CHECK-begrænsninger i den overordnede tabel. I øjeblikket tages UNIQUE-, PRIMARY KEY- og FOREIGN KEY-begrænsninger ikke i betragtning, men dette kan ændres i fremtiden.

NO INHERIT parent_table

Denne form fjerner måltabellen fra listen over børn til den angivne overordnet tabel. Forespørgsler mod den overordnede tabel vil ikke længere omfatte poster, der er hentet fra måltabellen.

OF type_name

Denne formular knytter tabellen til en sammensat type, som om CREATE TABLE OF havde dannet den. Tabellens liste over kolonnenavne og -typer skal nøjagtigt svare til den sammensatte types liste; tilstedeværelsen af en oid-systemkolonne må gerne afvige fra denne. Tabellen må ikke arve fra nogen anden tabel. Disse begrænsninger sikrer, at CREATE TABLE OF ville tillade en tilsvarende tabeldefinition.

NOT OF

Denne formular adskiller en typetabel fra dens type.

OWNER

Denne formular ændrer ejeren af tabellen, sekvensen eller visningen til den angivne bruger.

SET TABLESPACE

Denne formular ændrer tabellens tablespace til det angivne tablespace og flytter den eller de datafiler, der er knyttet til tabellen, til det nye tablespace. Eventuelle indekser på tabellen flyttes ikke; men de kan flyttes separat med yderligere SET TABLESPACE-kommandoer. Se også CREATE TABLESPACE.

RENAME

Formularerne RENAME ændrer navnet på en tabel (eller et indeks, en sekvens eller en visning) eller navnet på en individuel kolonne i en tabel. Der er ingen virkning på de lagrede data.

SET SCHEMA

Denne formular flytter tabellen til et andet skema. Tilknyttede indekser, begrænsninger og sekvenser, der ejes af kolonner i tabellen, flyttes også.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.