ALTERTABLE

ADD COLUMN

Acest formular adaugă o nouă coloană la tabelă, folosind aceeași sintaxă ca și CREATE TABLE.

DROP COLUMN

Acest formular elimină o coloană dintr-o tabelă. Indicii și constrângerile din tabel care implică coloana vor fi, de asemenea, eliminate automat. Va trebui să spuneți CASCADE dacă ceva din afara tabelului depinde de coloană, de exemplu, referințe de chei străine sau vizualizări. În cazul în care se specifică IF EXISTS și coloana nu există, nu se trimite nicio eroare. În acest caz, se emite în schimb o notificare.

SET DATA TYPE

Acest formular modifică tipul unei coloane dintr-un tabel. Indicii și constrângerile simple de tabel care implică coloana vor fi convertite automat pentru a utiliza noul tip de coloană prin repararea expresiei furnizate inițial. Clauza opțională COLLATE specifică o collation pentru noua coloană; dacă este omisă, collation este cea implicită pentru noul tip de coloană. Clauza opțională USING specifică modul în care se calculează valoarea noii coloane din vechea coloană; dacă este omisă, conversia implicită este aceeași cu cea a unei asignări de tip cast din vechiul tip de date în noul tip. Trebuie furnizată o clauză USING în cazul în care nu există o distribuție implicită sau de atribuire de la vechiul tip de date la noul tip de date.

SET/DROP DEFAULT

Aceste forme stabilesc sau elimină valoarea implicită pentru o coloană. Valorile implicite se aplică numai la comenzile INSERT ulterioare; ele nu determină modificarea rândurilor aflate deja în tabel. Valorile implicite pot fi, de asemenea, create pentru vizualizări, caz în care sunt inserate în instrucțiunile INSERT pe vizualizare înainte de aplicarea regulii ON INSERT a vizualizării.

SET/DROP NOT NULL

Aceste formulare modifică dacă o coloană este marcată pentru a permite valori nule sau pentru a respinge valorile nule. Puteți utiliza SET NOT NULL numai atunci când coloana nu conține valori nule.

SET STATISTICS

Acest formular stabilește ținta de colectare a statisticilor pentru fiecare coloană în parte pentru operațiile ANALYZE ulterioare. Ținta poate fi setată în intervalul de la 0 la 10000; alternativ, setați-o la -1 pentru a reveni la utilizarea țintei statistice implicite a sistemului (default_statistics_target). Pentru mai multe informații despre utilizarea statisticilor de către planificatorul de interogări PostgreSQL, consultați secțiunea 14.2.

SET ( attribute_option = value )
RESET ( attribute_option )

Acest formular setează sau resetează opțiunile per atribut. În prezent, singurele opțiuni per atribut definite sunt n_distinct și n_distinct_inherited, care anulează estimările privind numărul de valori distincte făcute de operațiile ANALYZE ulterioare. n_distinct afectează statisticile pentru tabelul propriu-zis, în timp ce n_distinct_inherited afectează statisticile colectate pentru tabel plus copiii săi de moștenire. Atunci când este setată la o valoare pozitivă, ANALYZE va presupune că coloana conține exact numărul specificat de valori distincte non-nule. Atunci când este setat la o valoare negativă, care trebuie să fie mai mare sau egală cu -1, ANALYZE va presupune că numărul de valori distincte nenule din coloană este liniar în dimensiunea tabelului; numărul exact trebuie calculat prin înmulțirea dimensiunii estimate a tabelului cu valoarea absolută a numărului dat. De exemplu, o valoare de -1 implică faptul că toate valorile din coloană sunt distincte, în timp ce o valoare de -0,5 implică faptul că fiecare valoare apare de două ori în medie. Acest lucru poate fi util atunci când dimensiunea tabelului se modifică în timp, deoarece înmulțirea cu numărul de rânduri din tabel nu se efectuează până în momentul planificării interogării. Specificați o valoare de 0 pentru a reveni la estimarea normală a numărului de valori distincte. Pentru mai multe informații despre utilizarea statisticilor de către planificatorul de interogări PostgreSQL, consultați secțiunea 14.2.

SET STORAGE

Acest formular stabilește modul de stocare pentru o coloană. Acesta controlează dacă această coloană este păstrată inline sau într-un tabel TOAST secundar și dacă datele trebuie să fie comprimate sau nu. PLAIN trebuie utilizat pentru valori de lungime fixă, cum ar fi numere întregi, și este inline, necomprimat. MAIN este pentru date inline, compresibile. EXTERNAL este pentru date externe, necomprimate, iar EXTENDED este pentru date externe, comprimate. EXTENDED este valoarea implicită pentru majoritatea tipurilor de date care acceptă stocarea non-PLAIN. Utilizarea EXTERNAL va face ca operațiile de subșiruri pe text foarte mare și pe valori bytea să se execute mai rapid, cu prețul creșterii spațiului de stocare. Rețineți că SET STORAGE nu modifică nimic în sine în tabel, ci doar stabilește strategia care va fi urmărită în timpul actualizărilor viitoare ale tabelului. A se vedea secțiunea 55.2 pentru mai multe informații.

ADD table_constraint

Acest formular adaugă o nouă constrângere la un tabel folosind aceeași sintaxă ca și CREATE TABLE, plus opțiunea NOT VALID, care în prezent este permisă numai pentru constrângerile de cheie externă. În cazul în care constrângerea este marcată NOT VALID, verificarea inițială potențial lungă pentru a verifica dacă toate rândurile din tabel îndeplinesc constrângerea este omisă. Constrângerea va fi în continuare aplicată în cazul inserărilor sau actualizărilor ulterioare (și anume, acestea vor eșua dacă nu există un rând corespunzător în tabelul la care se face referire). Dar baza de date nu va presupune că constrângerea este valabilă pentru toate rândurile din tabel, până când nu este validată prin utilizarea opțiunii VALIDATE CONSTRAINT.

ADD table_constraint_using_index

Acest formular adaugă o nouă constrângere PRIMARY KEY sau UNIQUE la un tabel pe baza unui indice unic existent. Toate coloanele indexului vor fi incluse în constrângere.

Indexul nu poate avea coloane de expresie și nici nu poate fi un index parțial. De asemenea, trebuie să fie un index b-tree cu ordine de sortare implicită. Aceste restricții asigură faptul că indicele este echivalent cu unul care ar fi construit printr-o comandă obișnuită ADD PRIMARY KEY sau ADD UNIQUE.

Dacă se specifică PRIMARY KEY, iar coloanele indicelui nu sunt deja marcate NOT NULL, atunci această comandă va încerca să facă ALTER COLUMN SET NOT NULL pentru fiecare astfel de coloană. Acest lucru necesită o scanare completă a tabelului pentru a verifica dacă coloana (coloanele) nu conține (conțin) niciun nul. În toate celelalte cazuri, aceasta este o operațiune rapidă.

Dacă este furnizat un nume de constrângere, atunci indexul va fi redenumit pentru a se potrivi cu numele constrângerii. În caz contrar, constrângerea va fi numită la fel ca și indexul.

După executarea acestei comenzi, indexul este „deținut” de constrângere, la fel ca în cazul în care indexul ar fi fost construit printr-o comandă obișnuită ADD PRIMARY KEY sau ADD UNIQUE. În special, renunțarea la constrângere va face ca și indicele să dispară.

Nota: Adăugarea unei constrângeri folosind un indice existent poate fi utilă în situațiile în care o nouă constrângere trebuie adăugată fără a bloca actualizările tabelelor pentru o perioadă lungă de timp. Pentru a face acest lucru, creați indexul folosind CREATE INDEX CONCURRENTLY și apoi instalați-l ca o constrângere oficială folosind această sintaxă. Vedeți exemplul de mai jos.

VALIDATE CONSTRAINT

Acest formular validează o constrângere de cheie externă care a fost creată anterior ca fiind NOT VALID, prin scanarea tabelului pentru a se asigura că nu există rânduri nepotrivite. Nu se întâmplă nimic dacă constrângerea este deja marcată ca fiind validă.

Validarea poate fi un proces îndelungat în cazul tabelelor mari și necesită în prezent un blocaj ACCESS EXCLUSIV. Valoarea separării validării de crearea inițială constă în faptul că puteți amâna validarea pentru perioade mai puțin aglomerate sau poate fi utilizată pentru a oferi timp suplimentar pentru a corecta erorile preexistente, prevenind în același timp noi erori.

DROP CONSTRAINT

Acest formular elimină constrângerea specificată pe un tabel. Dacă se specifică IF EXISTS și constrângerea nu există, nu se aruncă nicio eroare. În acest caz, se emite în schimb o notificare.

DISABLE/ENABLE TRIGGER

Aceste formulare configurează declanșarea declanșatorului (declanșatorilor) aparținând tabelului. Un declanșator dezactivat este în continuare cunoscut de sistem, dar nu este executat atunci când are loc evenimentul său de declanșare. Pentru un declanșator amânat, starea de activare este verificată atunci când are loc evenimentul, nu atunci când funcția de declanșare este efectiv executată. Se poate dezactiva sau activa un singur declanșator specificat după nume, toți declanșatorii din tabel sau numai declanșatorii utilizatorului (această opțiune exclude declanșatorii de constrângere generați intern, cum ar fi cei care sunt utilizați pentru a pune în aplicare constrângerile de cheie externă sau constrângerile de unicitate și excludere amânabile). Dezactivarea sau activarea declanșatoarelor de constrângeri generate intern necesită privilegii de superutilizator; acest lucru trebuie făcut cu prudență, deoarece, desigur, integritatea constrângerii nu poate fi garantată dacă declanșatoarele nu sunt executate. Mecanismul de declanșare a declanșării este, de asemenea, afectat de variabila de configurare session_replication_role. Declanșatoarele pur și simplu activate se vor declanșa atunci când rolul de replicare este „origin” (implicit) sau „local”. Declanșatoarele configurate ca ENABLE REPLICA se vor declanșa numai dacă sesiunea este în modul „replica”, iar declanșatoarele configurate ca ENABLE ALWAYS se vor declanșa indiferent de modul de replicare curent.

DISABLE/ENABLE RULE

Aceste forme configurează declanșarea regulilor de rescriere aparținând tabelului. O regulă dezactivată este în continuare cunoscută de sistem, dar nu este aplicată în timpul rescrierii interogărilor. Semantica este aceeași ca pentru declanșatoarele dezactivate/activate. Această configurație este ignorată pentru regulile ON SELECT, care sunt întotdeauna aplicate pentru ca vizualizările să continue să funcționeze chiar dacă sesiunea curentă se află într-un rol de replicare care nu este cel prestabilit.

CLUSTER

Acest formular selectează indexul implicit pentru viitoarele operații CLUSTER. Acesta nu reîmpărțește efectiv tabelul.

SET WITHOUT CLUSTER

Acest formular elimină din tabel specificația indicelui CLUSTER cel mai recent utilizat. Aceasta afectează viitoarele operațiuni de clusterizare care nu specifică un indice.

SET WITH OIDS

Acest formular adaugă o coloană de sistem oid la tabel (a se vedea secțiunea 5.4). Nu face nimic dacă tabelul are deja OID-uri.

Rețineți că aceasta nu este echivalentă cu ADD COLUMN oid oid; aceasta ar adăuga o coloană normală care se întâmplă să fie numită oid, nu o coloană de sistem.

SET WITHOUT OIDS

Acest formular elimină coloana de sistem oid din tabel. Este exact echivalent cu DROP COLUMN oid RESTRICT, cu excepția faptului că nu se va plânge dacă nu există deja o coloană oid.

SET ( storage_parameter = value )

Acest formular modifică unul sau mai mulți parametri de stocare pentru tabel. Consultați Parametrii de stocare pentru detalii despre parametrii disponibili. Rețineți că conținutul tabelului nu va fi modificat imediat de această comandă; în funcție de parametru, este posibil să fie nevoie să rescrieți tabelul pentru a obține efectele dorite. Acest lucru se poate face cu VACUUM FULL, CLUSTER sau cu una dintre formele de ALTER TABLE care forțează rescrierea tabelului.

Nota: În timp ce CREATE TABLE permite ca OIDS să fie specificat în sintaxa WITH (storage_parameter), ALTER TABLE nu tratează OIDS ca un parametru de stocare. În schimb, utilizați formularele SET WITH OIDS și SET WITHOUT OIDS pentru a schimba statutul OID.

RESET ( storage_parameter )

Acest formular resetează unul sau mai mulți parametri de stocare la valorile lor implicite. Ca și în cazul SET, ar putea fi necesară o rescriere a tabelului pentru a actualiza tabelul în întregime.

INHERIT parent_table

Acest formular adaugă tabelul țintă ca un nou copil al tabelului părinte specificat. Ulterior, interogările asupra tabelului părinte vor include înregistrări ale tabelului țintă. Pentru a fi adăugat ca și copil, tabelul țintă trebuie să conțină deja toate aceleași coloane ca și tabelul părinte (ar putea avea și coloane suplimentare). Coloanele trebuie să aibă tipuri de date corespunzătoare și, dacă au constrângeri NOT NULL în tabelul părinte, atunci trebuie să aibă și constrângeri NOT NULL în tabelul copil.

De asemenea, trebuie să existe constrângeri corespunzătoare în tabelul copil pentru toate constrângerile CHECK ale tabelului părinte. În prezent, constrângerile UNIQUE, PRIMARY KEY și FOREIGN KEY nu sunt luate în considerare, dar acest lucru s-ar putea schimba în viitor.

NO INHERIT parent_table

Acest formular elimină tabelul țintă din lista de copii ai tabelului părinte specificat. Interogările asupra tabelului părinte nu vor mai include înregistrări extrase din tabelul țintă.

OF type_name

Acest formular leagă tabelul de un tip compozit ca și cum CREATE TABLE OF l-ar fi format. Lista de nume și tipuri de coloane a tabelului trebuie să corespundă exact cu cea a tipului compozit; prezența unei coloane de sistem oid este permisă pentru a diferi. Tabelul nu trebuie să moștenească de la nici un alt tabel. Aceste restricții asigură faptul că CREATE TABLE OF ar permite o definiție echivalentă a tabelului.

NOT OF

Acest formular disociază un tabel tipizat de tipul său.

OWNER

Acest formular schimbă proprietarul tabelului, secvenței sau vizualizării în utilizatorul specificat.

SET TABLESPACE

Acest formular schimbă tablespace-ul tabelului în tablespace-ul specificat și mută fișierul (fișierele) de date asociat(e) cu tabelul în noul tablespace. Indicii tabelului, dacă există, nu sunt mutați; dar aceștia pot fi mutați separat cu comenzi SET TABLESPACE suplimentare. A se vedea, de asemenea, CREATE TABLESPACE.

RENAME

Formele RENAME modifică numele unei tabele (sau al unui index, secvență sau vizualizare) sau numele unei coloane individuale dintr-o tabelă. Nu există niciun efect asupra datelor stocate.

SET SCHEMA

Acest formular mută tabelul într-o altă schemă. Indicii, constrângerile și secvențele asociate deținute de coloanele tabelei sunt, de asemenea, mutate.

Lasă un răspuns

Adresa ta de email nu va fi publicată.