PostgreSQL unic constrângere

rezumat: în acest tutorial, veți afla despre PostgreSQL UNIQUE constrângere pentru a vă asigura că valorile stocate într-o coloană sau un grup de coloane sunt unice între rânduri într-un tabel.

uneori, doriți să vă asigurați că valorile stocate într-o coloană sau într-un grup de coloane sunt unice în întregul tabel, cum ar fi adresele de e-mail sau numele de utilizator.

PostgreSQL vă oferă constrângerea UNIQUE care menține unicitatea datelor corect.

când o constrângere UNIQUE este în loc, de fiecare dată când introduceți un rând nou, se verifică dacă valoarea este deja în tabel. Respinge modificarea și emite o eroare dacă valoarea există deja. Același proces este efectuat pentru actualizarea datelor existente.

când adăugați o UNIQUE constrângere la o coloană sau un grup de coloane, PostgreSQL va crea automat un index unic pe coloana sau grupul de coloane.

exemplu de constrângere unică PostgreSQL

următoarea instrucțiune creează un nou tabel numit person cu o constrângere UNIQUE pentru coloana email.

Code language: SQL (Structured Query Language) (sql)

rețineți că constrângerea UNIQUE de mai sus poate fi rescrisă ca o constrângere de tabel așa cum se arată în următoarea interogare:

Code language: SQL (Structured Query Language) (sql)

mai întâi, introduceți un rând nou în tabelul person utilizând instrucțiunea INSERT :

Code language: SQL (Structured Query Language) (sql)

în al doilea rând, introduceți un alt rând cu e-mail duplicat.

Code language: SQL (Structured Query Language) (sql)

PostgreSQL a emis un mesaj de eroare.

Code language: SQL (Structured Query Language) (sql)

crearea unei constrângeri unice pe mai multe coloane

PostgreSQL vă permite să creați o UNIQUE constrângere la un grup de coloane folosind următoarea sintaxă:

Code language: SQL (Structured Query Language) (sql)

combinația de Valori din coloana c2 și c3 va fi unică în întregul tabel. Valoarea coloanei c2 sau c3 nu trebuie să fie unică.

adăugarea unei constrângeri unice utilizând un index unic

uneori, poate doriți să adăugați o constrângere unică unei coloane sau unui grup de coloane existente. Să aruncăm o privire la următorul exemplu.

în primul rând, să presupunem că aveți un tabel numit equipment:

Code language: SQL (Structured Query Language) (sql)

în al doilea rând, creați un index unic bazat pe coloana equip_id.

Code language: SQL (Structured Query Language) (sql)

în al treilea rând, adăugați o constrângere unică la tabelul equipment utilizând indexul equipment_equip_id.

Code language: SQL (Structured Query Language) (sql)

observați că declarația ALTER TABLE dobândește o blocare exclusivă pe masă. Dacă aveți tranzacții în așteptare, acesta va aștepta finalizarea tuturor tranzacțiilor înainte de a schimba tabelul. Prin urmare, ar trebui să verificați tabelul pg_stat_activity pentru a vedea tranzacțiile curente în așteptare care sunt în curs de desfășurare utilizând următoarea interogare:

Code language: SQL (Structured Query Language) (sql)

ar trebui să vă uitați la rezultat pentru a găsi coloana state cu valoarea idle in transaction. Acestea sunt tranzacțiile care sunt în așteptare pentru a finaliza.

în acest tutorial, ați învățat despre constrângerile UNIQUE și cum să le utilizați pentru a impune valorile stocate într-o coloană sau într-un grup de coloane unice între rânduri din același tabel.

  • a fost util acest tutorial ?
  • nu



+