Criando e excluindo constraint PostgreSQL

Neste tutorial, você aprenderá a criar e excluir UNIQUE CONSTRAINT do PostgreSQL. Com garantir que os valores armazenados em uma coluna ou grupo de colunas sejam exclusivos nas linhas da tabela.

Às vezes, você deseja garantir que os valores armazenados em uma coluna ou conjunto de colunas sejam exclusivos na tabela, como endereços de e-mail ou nomes de usuário por exemplo.

O PostgreSQL fornece UNIQUE CONSTRAINT para manter adequadamente a exclusividade dos dados.

Quando uma UNIQUE CONSTRAINT está em vigor, toda vez que você insere uma nova linha , ela verifica se o valor já está na tabela. Ele rejeita a alteração e emite um erro se o valor já existir. O mesmo processo é realizado para atualizar os dados existentes (UPDATE).

Criação da tabela exemplo

Para iniciar nosso exemplo vamos criar uma tabela chamada usuário que irá possuir 3 campos, que serão, ID, NOME e EMAIL.

CREATE TABLE usuario (
    id bigint NOT NULL,
    nome character varying(255),
    email character varying(255),
    PRIMARY KEY (id)
);

Criando UNIQUE CONSTRAINT

Agora vamos ver um exemplo de para criar uma UNIQUE CONSTRAINT considerando que o campo email não pode ser repetir na tabela.

ALTER TABLE nome_da_tabela ADD CONSTRAINT nome_da_constraint UNIQUE (nome_do_campo);

Aplicado a sintaxe acima para o nosso exemplo de tabela teremos:

ALTER TABLE usuario ADD CONSTRAINT constraint_email_unico UNIQUE (email);

A partir de agora não podemos mais inserir duas pessoas com o mesmo email na tabela usuario conforme podemos ver no exemplo abaixo.

INSERT INTO usuario(id, nome, email) VALUES (1, 'Luiz', '[email protected]');
INSERT INTO usuario(id, nome, email) VALUES (2, 'Eduardo', '[email protected]');
ERROR: duplicate key value violates unique constraint "constraint_email_unico" DETAIL: Key (email)=([email protected]) already exists. SQL state: 23505
Exemplo constraint não permitindo inserção de dados

Criando UNIQUE CONSTRAINT para múltiplas colunas

Seguindo o exemplo anterior, porém, agora queremos definir como regra que não podem se repetir linhas com os memos valores de nome e email para mais de uma linha da tabela.

A sintaxe do comando é bem parecida com a anterior.

ALTER TABLE nome_da_tabela ADD CONSTRAINT nome_da_constraint UNIQUE (nome_do_campo_a, nome_do_campo_b);

Aplicado a sintaxe acima para o nosso exemplo de tabela teremos:

ALTER TABLE usuario ADD CONSTRAINT constraint_nome_e_email_unico UNIQUE (nome, email);

A partir de agora não podemos mais inserir duas pessoas com o mesmo email e nome na tabela usuario conforme podemos ver no exemplo abaixo.

Exemplo permitido atualmente:
Exemplo permitido

Agora podemos ver o exemplo em que não podemos mais inserir usuario com o nome eduardo” e email [email protected]

Exemplo constraint não permitindo inserção de dados

Excluir UNIQUE CONSTRAINT

Em alguns casos precisamos excluir nossas contraint’s quando elas deixam de fazer sentido, ou por qualquer que seja o motivo. Abaixo veremos um exemplo de exclusão de CONSTRAINT.

ALTER TABLE nome_da_tabela
DROP CONSTRAINT nome_da_constraint;

Aplicando o a sintaxe acima para o nosso exemplo temos o seguinte resultado:

ALTER TABLE usuario DROP CONSTRAINT constraint_email_unico;

Com os exemplos acima sabemos como criar e excluir constraint para garantir a integridade dos nossos dados. Sucesso a todos!

Deixe um comentário

O seu endereço de e-mail não será publicado.