Postgres pro standard de documentare 9

5.5. Schimbarea tabelelor

Dacă ați creat tabele și apoi ați dat seama că ați făcut o greșeală sau dacă cerințele aplicației dvs. s-au modificat, o puteți șterge și ao crea din nou. Dar va fi incomod dacă tabela este deja completă cu date sau dacă este menționată de alte obiecte baze de date (de exemplu, prin cheie externă). Prin urmare, Postgres Pro oferă un set de comenzi pentru modificarea tabelelor. Rețineți că acest lucru este în esență diferit de schimbarea datelor din tabel: aici discutăm modificarea definiției sau structurii tabelului.

Modificați valorile implicite
  • Schimbați tipurile de coloane
  • 5.5.1. Adăugarea unei coloane

    Puteți adăuga o coloană după cum urmează:

    Coloana nouă este populate cu valoarea implicită (sau NULL dacă nu adăugați instrucțiunea DEFAULT).

    În acest caz, puteți determina imediat constrângerile coloanei folosind sintaxa obișnuită:

    De fapt, puteți utiliza toate constructele permise în definiția coloanei în comanda CREATE TABLE. Rețineți, totuși, că valoarea implicită trebuie să satisfacă aceste restricții astfel încât operația ADD să reușească. De asemenea, puteți umple corect coloana corectă, apoi adăugați constrângeri (vedeți mai jos).

    Adăugarea unei coloane cu o valoare implicită va schimba toate rândurile din tabel (acestea vor stoca o nouă valoare). Cu toate acestea, dacă nu este specificată nici o valoare implicită, Postgres Pro se poate face fără modificări fizice. Prin urmare, dacă intenționați să umpleți o coloană cu valori care nu sunt implicite în majoritate, este mai bine să adăugați o coloană fără valoare implicită, apoi să introduceți valorile necesare utilizând UPDATE. și apoi determinați valoarea implicită, după cum este descris mai jos.

    5.5.2. Ștergerea unei coloane

    Puteți șterge o coloană după cum urmează:

    Datele din această coloană dispare. Împreună cu coloana, sunt șterse constrângerile de tabelă inclusiv. Cu toate acestea, dacă coloana se referă la constrângerea cheii străine a altui tabel, Postgres Pro nu elimină implicit această constrângere. Puteți activa ștergerea tuturor obiectelor care depind de această coloană prin adăugarea instrucțiunii CASCADE.

    Mecanismul general din spatele acestui lucru este descris în secțiunea 5.13.

    5.5.3. Adăugați restricție

    Pentru a adăuga o constrângere, utilizați sintaxa constrângerii de masă. De exemplu:

    Pentru a adăuga o constrângere NOT NULL care nu poate fi scrisă ca o constrângere de masă, utilizați următoarea sintaxă:

    Restricția este testată automat și va fi adăugată numai dacă este satisfăcută de datele din tabel.

    5.5.4. Eliminați constrângerea

    Pentru a elimina o restricție, trebuie să știți numele acesteia. Dacă nu i-ați dat un nume, a fost făcut implicit de sistem și ar trebui să aflați. Comanda psql \ d tbl_name (sau alte programe care afișează informații detaliate despre tabele) poate fi utilă aici. Cunoscând numele, puteți folosi comanda:

    (Dacă aveți de-a face cu un nume de constrângere de 2 $, asigurați-vă că îl includeți în citate astfel încât să fie un identificator valabil.)

    Ca și în cazul ștergerii unei coloane, dacă doriți să eliminați constrângerea cu obiecte dependente, adăugați instrucțiunea CASCADE. Un exemplu de astfel de dependență poate fi constrângerea cheii străine asociată cu coloanele de constrângere a cheii primare.

    Deci, puteți elimina restricțiile de orice tip, cu excepția NOT NULL. Pentru a elimina constrângerea NOT NULL, folosiți comanda:

    (Rețineți că NOT NULL nu are nume.)

    5.5.5. Modificați valoarea implicită

    Atribuiți o nouă valoare implicită coloanei după cum urmează:

    Rețineți că acest lucru nu afectează în niciun fel rândurile existente ale tabelului, ci doar stabilește valoarea implicită pentru următoarele comenzi INSERT.

    Pentru a șterge valoarea implicită, executați:

    În acest caz, de fapt, valoarea implicită este pur și simplu setată la NULL. În consecință, nu va exista nici o eroare dacă încercați să ștergeți valoarea implicită care nu este definită explicit, deoarece implicit există și este NULL.

    5.5.6. Schimbarea tipului de date dintr-o coloană

    Pentru a converti o coloană într-un alt tip de date, utilizați comanda:

    Aceasta va avea succes numai dacă toate valorile existente din coloană pot fi reduse implicit la un tip nou. Dacă aveți nevoie de o conversie mai complexă, puteți adăuga o indicație USING. Determinarea modului de a obține noi valori de la cele vechi.

    Postgres Pro va încerca, de asemenea, să convertească valoarea implicită a coloanei implicite (dacă este definită) la tipul nou și toate constrângerile asociate coloanei respective. Dar transformarea se poate dovedi a fi greșită, iar apoi veți obține rezultate neașteptate. Prin urmare, este de obicei mai bine să eliminați toate constrângerile coloanei înainte de a schimba tipul acesteia și apoi să recreați constrângerile modificate corect.

    5.5.7. Redenumirea unei coloane

    Pentru a redenumi o coloană, urmați acești pași: