none
Campos duplicados RRS feed

  • Pergunta

  • Pessoal,

    Existem 2 campos em minha tabela que nao podem ter valores duplicados:

    ID e CODIGO

    Como faco pra setar isso na tabela ?

    Valeu

    quinta-feira, 15 de março de 2012 18:07

Respostas

  • A.G.A, boa tarde!

    Geralmente criamos o campo ID dependendo do negócio como um campo auto numerável e sendo uma Primary Key. 

    Quando queremos manter a integridade de valores dentro de uma tabela utilizamos geralmente constraints. No seu caso você pode fazer de duas formas:

    1 - Se deseja que a conjunção desses dois campos não sejam nunca duplicados, por exemplo se você possui um valor no ID = 2 e Codigo = 001 dentro do banco  e outra transação tentar inserir esse mesmo dado ID = 2 e Código = 001 você pode criar a seguintes constraint em sua tabela.

    ALTER TABLE [NomeTabela]

    ADD CONSTRAINT CK_NomeTabela_ID_Codigo

    UNIQUE (ID, Codigo)

    ou seja aqui você garante que ID + Código não podem ser iguais nunca dentro de sua tabela.

    2 - Se deseja criar uma unicidade em cada campo então, você pode realizar da seguinte forma:

    ALTER TABLE [NomeTabela]

    ADD CONSTRAINT CK_NomeTabela_ID

    UNIQUE (ID)

    ALTER TABLE [NomeTabela]

    ADD CONSTRAINT CK_NomeTabela_Codigo

    UNIQUE (Codigo)


    Abs


    Luan.Moreno MTAC | MCP | MTA | MCTS | MCITP SQL Server Administrator / Developer 2008

    quinta-feira, 15 de março de 2012 18:19

Todas as Respostas

  • A.G.A, boa tarde!

    Geralmente criamos o campo ID dependendo do negócio como um campo auto numerável e sendo uma Primary Key. 

    Quando queremos manter a integridade de valores dentro de uma tabela utilizamos geralmente constraints. No seu caso você pode fazer de duas formas:

    1 - Se deseja que a conjunção desses dois campos não sejam nunca duplicados, por exemplo se você possui um valor no ID = 2 e Codigo = 001 dentro do banco  e outra transação tentar inserir esse mesmo dado ID = 2 e Código = 001 você pode criar a seguintes constraint em sua tabela.

    ALTER TABLE [NomeTabela]

    ADD CONSTRAINT CK_NomeTabela_ID_Codigo

    UNIQUE (ID, Codigo)

    ou seja aqui você garante que ID + Código não podem ser iguais nunca dentro de sua tabela.

    2 - Se deseja criar uma unicidade em cada campo então, você pode realizar da seguinte forma:

    ALTER TABLE [NomeTabela]

    ADD CONSTRAINT CK_NomeTabela_ID

    UNIQUE (ID)

    ALTER TABLE [NomeTabela]

    ADD CONSTRAINT CK_NomeTabela_Codigo

    UNIQUE (Codigo)


    Abs


    Luan.Moreno MTAC | MCP | MTA | MCTS | MCITP SQL Server Administrator / Developer 2008

    quinta-feira, 15 de março de 2012 18:19
  • Boa tarde A.G.A. Neto

    Você pode criar Unique Key

    Se sua tabela já existe, utilize o ALTER TABLE para criá-la

    ALTER TABLE [dbo].[tabela] ADD  CONSTRAINT [UQ_Campo] UNIQUE NONCLUSTERED 
    (
    	[Campo1] ASC,
             [Campo2] ASC
    )

    []'s


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    quinta-feira, 15 de março de 2012 18:22
  • A.G.A Neto,

    Importante destacar que só podemos ter um único campo com índice único por tabela, sendo que, normalmente toda Primary Key é um índice único.

    A sugestão do Luan de criar uma Chave Primária Composta é uma solução interessante.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    quinta-feira, 15 de março de 2012 19:55
    Moderador