none
Como deixar um Campo não Chave para ñ ter valores duplicados RRS feed

  • Pergunta

  • Olá Pessoal tenho o seguinte script no meu SqlServer 2005 Express e SqlServer Management Studio

    CREATE TABLE [dbo].[nam_Users](
    [UserID] [int] IDENTITY(1,1) NOT NULL,
    [UserName] [nvarchar](256) NOT NULL,
    [ProductID] [int] NOT NULL,

    [LinkURL] [nvarchar](256) NOT NULL,


    [DataValorReferencia] [nvarchar](10) NOT NULL,

    [LiberarQuitado] [bit] NULL
    CONSTRAINT [PK_nam_Users] PRIMARY KEY CLUSTERED
    (
    [UserID] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]


    Gostaria de Saber como no script no modo edit do SqlServer Management Studio ou em propriedades no modo design do mesmo como eu poderia setar o campo [UserName] para não conter valores duplicados (UserName duplicados) na mesma table

    Fico no aguardo á quem puder me ajudar e desde já agradeço


    LADEF
    sexta-feira, 5 de junho de 2009 20:10

Respostas

  • Olá Luiz

    Seu codigo ficará assim:

    CREATE TABLE [dbo].[nam_Users]( 
    [UserID] [int] IDENTITY(1,1) NOT NULL, 
    [UserName] [nvarchar](256) NOT NULL unique(UserName), 
    [ProductID] [int] NOT NULL,
    [LinkURL] [nvarchar](256) NOT NULL,
    [DataValorReferencia] [nvarchar](10) NOT NULL,
    [LiberarQuitado] [bit] NULL 
    CONSTRAINT [PK_nam_Users] PRIMARY KEY CLUSTERED 
    ( 
    [UserID] ASC 
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
    ) ON [PRIMARY] 

    Att.
    Marcelo Fernandes
    MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!
    • Marcado como Resposta LuizIta sexta-feira, 12 de junho de 2009 04:12
    segunda-feira, 8 de junho de 2009 20:30

Todas as Respostas

  • Boa Tarde,

    Coloque uma Unique Constraint nessa coluna.

    ALTER TABLE dbo.nam_users ADD CONSTRAINT UQ_Nome UNIQUE (UserName)
    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Usando o SSIS para importar várias planilhas de um mesmo arquivo Excel para o SQL Server
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!591.entry
    Classifique as respostas. O seu feedback é imprescindível
    sexta-feira, 5 de junho de 2009 20:32
  • Gustavo ainda não criei a Table como pode se vêr acima estou editando ela no wordpad antes de executá-la como seria essa linha no create baseando-se nas linhas de meu script ácima

    Fico no aguardo e desde já agradeço
    LADEF
    sábado, 6 de junho de 2009 00:12
  • Luiz,

    Dentro do próprio comando Create Table, você pode definir esta constraint, veja abaixo o exemplo:

    Create Table Teste
    (Codigo Int,
     Nome VarChar(100) Unique (UserName))

    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    segunda-feira, 8 de junho de 2009 13:24
    Moderador
  • Junior Galvão respondeu


    Dentro do próprio comando Create Table, você pode definir esta constraint, veja abaixo o exemplo:

    Create Table Teste
    (Codigo Int,
     Nome VarChar(100) Unique (UserName))
    No caso o que vc me disse ácima seria um campo Nome e o UserName seria um aliás que substituirá o campo Nome

    como unico fico no aguardo e desde já agradeço
    LADEF
    segunda-feira, 8 de junho de 2009 20:02
  • Ola LuizIta

    No caso foi so um erro de digitacao, vc deve repetir o "nome"

    Create Table Teste
    (Codigo Int,
     Nome VarChar(100) Unique (Nome))
    


    Att.
    Marcelo Fernandes
    MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!
    segunda-feira, 8 de junho de 2009 20:14
  • No caso só para confirmar o meu campo que éra assim

       [UserName] [nvarchar](70) NOT NULL,


    ficará assim

      [UserName] [nvarchar](70) Unique [UserName] NOT NULL,

    fico no aguardo e desde já agradeço
    LADEF
    segunda-feira, 8 de junho de 2009 20:24
  • Olá Luiz

    Seu codigo ficará assim:

    CREATE TABLE [dbo].[nam_Users]( 
    [UserID] [int] IDENTITY(1,1) NOT NULL, 
    [UserName] [nvarchar](256) NOT NULL unique(UserName), 
    [ProductID] [int] NOT NULL,
    [LinkURL] [nvarchar](256) NOT NULL,
    [DataValorReferencia] [nvarchar](10) NOT NULL,
    [LiberarQuitado] [bit] NULL 
    CONSTRAINT [PK_nam_Users] PRIMARY KEY CLUSTERED 
    ( 
    [UserID] ASC 
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
    ) ON [PRIMARY] 

    Att.
    Marcelo Fernandes
    MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!
    • Marcado como Resposta LuizIta sexta-feira, 12 de junho de 2009 04:12
    segunda-feira, 8 de junho de 2009 20:30
  • Ok assim que terminar de construir minha table irei testar mas só mais uma pergunta quantos campos sem sêr campo chave mas com duplicação não autorizada que nem o 

     [UserName] [nvarchar](256) NOT NULL unique(UserName),

     
    eu posso criar em minha table, ou existe um limite?


    Fico no aguardo e desde já agradeço
    LADEF
    terça-feira, 9 de junho de 2009 00:10
  • Bom Dia,

    A Unique Constraint "cria" um índice nos bastidores. Como o limite máximo de índices por tabela é de 250 você pode repartir esse valor entre os índices, a PK e as Unique Constraints. Acho que é muito mais que o suficiente

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Como eliminar linhas duplicadas e repetições no SQL Server
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!584.entry


    Classifique as respostas. O seu feedback é imprescindível
    terça-feira, 9 de junho de 2009 00:16
  • Maia,

    Desta forma, fazendo esta divisão poderiamos proporcionar um pequena aumento de desempenho durante a consulta aos dados.


    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    terça-feira, 9 de junho de 2009 12:57
    Moderador
  • Mas só para eu entender no linguajar popular na mesma table eu posso têr dois campos como este

     [UserName] [nvarchar](256) NOT NULL unique(UserName),

     [Email] [nvarchar](256) NOT NULL unique(Email),

    dentro da table

    Fico no aguardo e desde já agradeço

    LADEF
    quarta-feira, 10 de junho de 2009 01:30