Como criar uma restrição exclusiva em uma tabela existente no SQL Server 2005?
Estou procurando pelo TSQL e como fazê-lo no diagrama do banco de dados.
Como criar uma restrição exclusiva em uma tabela existente no SQL Server 2005?
Estou procurando pelo TSQL e como fazê-lo no diagrama do banco de dados.
Respostas:
O comando SQL é:
ALTER TABLE <tablename> ADD CONSTRAINT
<constraintname> UNIQUE NONCLUSTERED
(
<columnname>
)
Veja a sintaxe completa aqui .
Se você deseja fazer isso a partir de um diagrama de banco de dados:
No SQL Server Management Studio Express:
Aviso: apenas uma linha nula pode estar na coluna que você definiu para ser ú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;
Consulte O valor do campo deve ser exclusivo, a menos que seja NULL para um intervalo de respostas.
ALTER TABLE dbo.<tablename> ADD CONSTRAINT
<namingconventionconstraint> UNIQUE NONCLUSTERED
(
<columnname>
) ON [PRIMARY]
Também descobri que você pode fazer isso através dos diagramas do banco de dados.
Clicando com o botão direito do mouse na tabela e selecionando Índices / Chaves ...
Clique no botão 'Adicionar' e altere as colunas para as que você deseja tornar únicas.
Alterar é exclusivo para Sim.
Clique em fechar e salve o diagrama, e ele será adicionado à tabela.
Você está procurando algo como o seguinte
ALTER TABLE dbo.doc_exz
ADD CONSTRAINT col_b_def
UNIQUE column_b
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.
UNIQUE NONCLUSTERED
e opções PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON
?
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