Pergunta

Eu tenho uma tabela como esta:

|UserId   |  ContactID |  ContactName 
---------------------------------------
| 12456   |  Ax759     |  Joe Smith
| 12456   |  Ax760     |  Mary Smith
| 12458   |  Ax739     |  Carl Lewis
| 12460   |  Ax759     |  Chuck Norris
| 12460   |  Bx759     |  Bruce Lee

Eu preciso adicionar uma restrição a esta tabela para que nenhum usuário pode ter contato duplicado id. Os usuários estão importando dados de vários sistemas externos de modo ContactId não será único em toda a linha, mas será único em uma base por usuário.

Eu sei como criar contraints originais e não-nulo com base em colunas simples, mas como eu posso criar um contraints únicas por 2 colunas?

Foi útil?

Solução

Você pode tentar o seguinte:

CREATE UNIQUE CLUSTERED INDEX index_name ON TABLE (col1,col2)
or
CREATE UNIQUE NONCLUSTERED INDEX index_name ON TABLE (col1,col2)

ou

ALTER TABLE [dbo].[TABLE] ADD CONSTRAINT
UNIQUE_Table UNIQUE CLUSTERED
(
col1,
col2
) ON [PRIMARY]

Outras dicas

Você pode adicionar restrição exclusiva tou seus campos:

ALTER TABLE YourTable
ADD CONSTRAINT UQ_UserId_ContactID UNIQUE(UserId, ContactID)

Você pode tentar ALTER TABLE [TABLE_NAME] ADD UNIQUE (column1,column2,column3 ...columnN).

Espero que isso ajude aplausos.

Aqui está a sintaxe para criar uma restrição exclusiva em oposição a um índice exclusivo.

ALTER TABLE publishers 
  ADD CONSTRAINT uqc_pub_name 
  UNIQUE (pub_name)

É importante notar que existem diferenças sutis depende de qual método você usa para enfore a singularidade de uma coluna.

Veja a seguinte referência MSDN para uma explicação passo a passo interessante destes:

http://msdn.microsoft.com/ en-us / library / aa224827 (SQL.80) .aspx

CREATE TABLE [LineItems](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [OrderID] [int] NOT NULL,
    [LineItemNumber] [int] NOT NULL,
 CONSTRAINT [PK_LineItems] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
),
 CONSTRAINT [UC_LineItems] UNIQUE NONCLUSTERED 
(
    [OrderID] ASC,
    [LineItemNumber] ASC
)
)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top