Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Details
| Attribute | Value |
|---|---|
| Nome do Produto | SQL Server |
| ID do Evento | 1505 |
| Origem do evento | MSSQLSERVER |
| Componente | SQLEngine |
| Nome simbólico | DUP_KEY |
| Texto da mensagem | CREATE UNIQUE INDEX terminou porque foi encontrada uma chave duplicada para o nome do objeto '%.*ls' e o nome do índice '%.*ls'. O valor da chave duplicada é %ls. |
Explanation
Este erro ocorre quando tenta criar um índice único e mais do que uma linha na tabela contém o valor duplicado especificado. Um índice único é criado quando se cria um índice e se especifica a palavra-chave ÚNICA, ou quando se cria uma restrição ÚNICA. A tabela não pode conter linhas que tenham valores duplicados nas colunas definidas no índice ou restrição.
Considere os dados na tabela seguinte de Colaboradores :
| Apelido | Primeiro nome | Título do Cargo | HireDate |
|---|---|---|---|
| Walters | Luís | Designer Sénior de Ferramentas | 2004-11-19 |
| Castanho | Kevin | Assistente de Marketing | NULO |
| Castanho | Jo | Engenheiro de Projeto | NULO |
| Walters | Luís | Designer de Ferramentas | 2001-08-09 |
Um índice único não pode ser criado nas combinações de colunas Apelido ou Apelido, Primeiro Nome devido a valores duplicados nas linhas.
Menos óbvio é a possibilidade de violação de singularidade na coluna HireDate . Para efeitos de indexação, os valores NULL comparam-se como iguais. Portanto, não pode criar um índice ou restrição única se os valores-chave forem NULL em mais de uma linha. Dados os dados acima, não pode ser criado um índice único nas combinações de colunas HireDate ou ApelidoNome, DataContratar.
A mensagem de erro 1505 devolve a primeira linha que viola a restrição de unicidade. Podem existir outras linhas duplicadas na tabela. Para encontrar todas as linhas duplicadas, consulte a tabela especificada e use as cláusulas GROUP BY e HAVING para reportar as linhas duplicadas. Por exemplo, a consulta seguinte devolve as linhas na tabela Employee que têm nomes e apelidos duplicados.
SELECIONE Apelido, NomePróprio, count(*) DE dbo. Grupo de Funcionários POR Apelido, Primeiro Nome TENDO contagem (*) > 1;
Ação do Usuário
Considere as seguintes soluções.
Adicione ou remova colunas na definição de índice ou restrição para criar um composto único. No exemplo anterior, adicionar uma coluna MiddleName à definição de índice ou restrição pode resolver o problema da duplicação.
Selecione colunas que estejam definidas como NÃO NULAS quando escolher colunas para um índice ou restrição única. Isto elimina a possibilidade de uma violação de unicidade causada quando mais do que uma linha contém NULL nos valores das chaves.
Se os valores duplicados forem resultado de erros de introdução de dados, corrija manualmente os dados e depois crie o índice ou restrição. Para informações sobre como remover linhas duplicadas numa tabela, consulte Remover linhas duplicadas de uma tabela do SQL Server.
Ver também
CREATE INDEX (Transact-SQL)
Criar índices únicos
Criar Restrições Únicas