Como garantir que os valores de uma coluna não se repitam com a constraint UNIQUE
A constraint UNIQUE garante que todos os valores de uma coluna sejam únicos nenhum registro pode ter o mesmo valor que outro na mesma coluna.
1CREATE TABLE clientes ( 2 id SERIAL PRIMARY KEY, 3 nome VARCHAR(100) NOT NULL, 4 email VARCHAR(150) UNIQUE
1INSERT INTO clientes (nome, email) VALUES ('Ana Souza', 'ana@email.com'); 2 3-- ERRO: email já existe 4INSERT
ERROR: duplicate key value violates unique constraint "clientes_email_key"
Você pode exigir que a combinação de colunas seja única, mesmo que cada coluna individualmente se repita:
1CREATE TABLE matriculas ( 2 aluno_id INTEGER NOT NULL, 3 curso_id INTEGER NOT NULL, 4 -- Um aluno pode se matricular em vários cursos,
1CREATE TABLE clientes ( 2 id SERIAL PRIMARY KEY, 3 email VARCHAR(150) NOT NULL, 4
1ALTER TABLE clientes ADD CONSTRAINT uq_clientes_cpf UNIQUE (cpf);
1ALTER TABLE clientes DROP CONSTRAINT uq_clientes_cpf;
| Característica | UNIQUE | PRIMARY KEY |
|---|---|---|
| Aceita NULL? | Sim (um por vez) | Não |
| Quantas por tabela? | Várias | Apenas uma |
| Finalidade | Unicidade geral | Identificador único |
Use
UNIQUEpara campos que precisam ser únicos mas não são a chave principal da tabela — como e-mail, CPF, código de produto, número de matrícula.