it-swarm-pt.tech

SQL Server 2005 Como criar uma restrição exclusiva?

Como faço para criar uma restrição exclusiva em uma tabela existente no SQL Server 2005?

Eu estou procurando tanto o TSQL e como fazê-lo no diagrama de banco de dados.

180
David Basarab

O comando SQL é:

ALTER TABLE <tablename> ADD CONSTRAINT
            <constraintname> UNIQUE NONCLUSTERED
    (
                <columnname>
    )

Veja a sintaxe completa aqui .

Se você quiser fazer isso a partir de um Diagrama de Banco de Dados:

  • clique com o botão direito do mouse na tabela e selecione "Índices/Chaves"
  • clique no botão Adicionar para adicionar um novo índice
  • insira as informações necessárias nas Propriedades à direita:
    • as colunas desejadas (clique no botão Reticências para selecionar)
    • conjunto é exclusivo para sim
    • dê um nome apropriado
272
Rory

No SQL Server Management Studio Express:

  • Clique com o botão direito na tabela, escolha Modify ou Design (para versões posteriores)
  • Clique com o botão direito do mouse no campo, escolha Indexes/Keys ...
  • Clique em Adicionar
  • Para Colunas, selecione o nome do campo você quer ser único.
  • Para Type, escolha Unique Key.
  • Clique em Close, Save a tabela.
84
James Lawruk
ALTER TABLE [TableName] ADD CONSTRAINT  [constraintName] UNIQUE ([columns])
28
WildJoe

Aviso: apenas uma linha nula pode estar na coluna definida como única.

Você pode fazer isso com um índice filtrado no SQL 2008:

CREATE UNIQUE NONCLUSTERED INDEX idx_col1
ON dbo.MyTable(col1)
WHERE col1 IS NOT NULL;

Veja O valor do campo deve ser único, a menos que seja NULL para um intervalo de respostas.

15
Squirrel
ALTER TABLE dbo.<tablename> ADD CONSTRAINT
            <namingconventionconstraint> UNIQUE NONCLUSTERED
    (
                <columnname>
    ) ON [PRIMARY]
13
Ivan Bosnic

Eu também achei que você pode fazer isso via, os diagramas de banco de dados.

Clicando com o botão direito na tabela e selecionando Índices/Chaves ...

Clique no botão 'Adicionar' e altere as colunas para as colunas que você deseja tornar únicas.

A mudança é única para sim.

Clique em fechar e salve o diagrama e ele será adicionado à tabela.

10
David Basarab

Você está procurando algo parecido com o seguinte

ALTER TABLE dbo.doc_exz
ADD CONSTRAINT col_b_def
UNIQUE column_b

MSDN Docs

8
Thunder3

Para criar uma restrição UNIQUE em uma ou várias colunas quando a tabela já estiver criada, use o seguinte SQL:

ALTER TABLE TableName ADd UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...)

Para permitir a nomeação de uma restrição UNIQUE para a consulta acima

ALTER TABLE TableName ADD CONSTRAINT un_constaint_name UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...)

A consulta suportada pelo MySQL/SQL Server/Oracle/MS Access.

6
Rafiq

No diagrama do estúdio de gerenciamento, escolha a tabela, clique com o botão direito do mouse para adicionar nova coluna, se desejar, clique com o botão direito do mouse na coluna e escolha "Verificar Restrições", lá você pode adicionar uma.

5
Gibbons

Em algumas situações, pode ser desejável garantir que a chave exclusiva não exista antes de criá-la. Nesses casos, o script abaixo pode ajudar:

IF Exists(SELECT * FROM sys.indexes WHERE name Like '<index_name>')
    ALTER TABLE dbo.<target_table_name> DROP CONSTRAINT <index_name> 
GO

ALTER TABLE dbo.<target_table_name> ADD CONSTRAINT <index_name> UNIQUE NONCLUSTERED (<col_1>, <col_2>, ..., <col_n>) 
GO
0
Mario Vázquez