Resumo: neste tutorial, irá aprender sobre a restrição do PostgreSQL UNIQUE para se certificar de que os valores armazenados numa coluna ou num grupo de colunas são únicos entre linhas de uma tabela.

às vezes, você quer garantir que os valores armazenados em uma coluna ou um grupo de colunas são únicos em toda a tabela, como endereços de E-mail ou nomes de usuário.

PostgreSQL fornece-lhe a restrição UNIQUE que mantém a unicidade dos dados corretamente.

quando existe uma restrição UNIQUE, sempre que introduz uma nova linha, verifica se o valor já está na tabela. Rejeita a mudança e emite um erro se o valor já existe. O mesmo processo é realizado para a atualização dos dados existentes.

quando adicionar uma restrição UNIQUE a uma coluna ou grupo de colunas, o PostgreSQL irá criar automaticamente um índice único na coluna ou no grupo de colunas.

PostgreSQL exemplo de restrição única

a seguinte declaração cria uma nova tabela chamada person com uma restrição UNIQUE para a coluna email.

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

Note que a restrição UNIQUE acima pode ser reescrita como uma restrição de tabela como mostrado na seguinte consulta:

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

Em Primeiro Lugar, inserir uma nova linha na tabela person usando a instrução INSERT :

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

em segundo lugar, insira outra linha com e-mail duplicado.

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

PostgreSQL emitiu uma mensagem de erro.

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

criar uma restrição única em várias colunas

PostgreSQL permite-lhe criar uma restrição UNIQUE a um grupo de colunas usando a seguinte sintaxe:

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

a combinação de valores na coluna c2 E c3 será única em todo o quadro. O valor da coluna c2 ou c3 não tem de ser único.

adicionar uma restrição única usando um índice único

por vezes, poderá querer adicionar uma restrição única a uma coluna ou grupo de colunas existentes. Vamos dar uma olhada no seguinte exemplo.

primeiro, suponha que você tem uma tabela chamada equipment:

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

em segundo lugar, criar um índice único baseado na coluna equip_id.

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

Third, add a unique constraint to the equipment table using the equipment_equip_id index.

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

Notice that the ALTER TABLE statement acquires an exclusive lock on the table. Se você tiver quaisquer transações pendentes, ele vai esperar por todas as transações para completar antes de mudar a tabela. Portanto, você deve verificar a tabela pg_stat_activity para ver as transações pendentes atuais que estão em andamento usando a seguinte consulta:

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

você deve olhar para o resultado para encontrar a coluna state com o valor idle in transaction. Essas são as transações que estão pendentes para completar.

neste tutorial, você aprendeu sobre restrições UNIQUE e como usá-las para impor valores armazenados em uma coluna ou um grupo de colunas únicas entre linhas dentro da mesma tabela.

  • este tutorial foi útil ?
  • YesNo

Deixe uma resposta

O seu endereço de email não será publicado.