Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Não repetir o mesmo valor


Fells

Pergunta

Boa dia e boa semanaa!!!

A duvida da vez é: tenho várias colunas na minha tabela... CODIGO (PK), NUMERORM, CATEGORIA, TIPO, NUMEROPECA, QTDE, NUMEROAMOSTRA, APLICACAO, CLIENTE, DATA ..... e mais alguns.

Na intranet o usuário vai preencher um formulário com esses campos acima e salvar (encaminha para o SQL Server).

Como podem ver minha PK é o CODIGO... porém pediram que a coluna NUMERORM (que é tipo Varchar) e NUMEROAMOSTRA (que é do tipo Varchar) onde ambos são digitadas pelo usuário, fosse algo unico como uma PK =/.

Ou seja... o cara vai preencher o formulário e atribuir um número qualquer e esse número não pode se repetir... há algo que possa ser feito no SQL Server que vai solucionar esse problema??

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Bom dia Fells,

Entendi o problema, mas o estranho seria um código digitado pelo usuário ser sua PK. Teoricamente a PK é um controle interno, transparente ao usuário, e que não significa nada como metadados (dados sobre outros dados).

Tenho algumas alternativas:

- você implementa duas colunas: uma como sendo PK mesmo, e outra com o CODIGO. A coluna de controle fica sendo a PK, enquanto a coluna CODIGO fica sendo de dados que serão digitados pelo usuário.

Como fazer a coluna CODIGO ser única? Toda vez antes de gravar os dados na tabela, pesquisar se aquele CODIGO existe. Se existir, mandar mensagem pro usuário.

A criação de duas colunas seria interessante para performance, uma vez que o tipo do campo CODIGO é varchar...

- Criar a coluna CODIGO não como PK, mas indexá-la e colocá-la como única. Seria a "mesma coisa" de uma PK.

Link para o comentário
Compartilhar em outros sites

  • 0

Então cara... o CODIGO (PK) é gerado sozinho... o usuário não faz isso... porem esse NUMERORM e NUMEROAMOSTRA são eles que digitam.

Assim... a empresa finaliza uma peça e os proprio pessoal atribui esses dois números para cada peça manualmente...

é meio estranho, mais é um padrão da empresa, enfim! Ai já que eles fazem isso manualmente, eles queria um jeito de esse número não se repetir!

Ai achei que entrando no SQL Server/Tabela/Design Table e selecionar a coluna e dizer que era uma PK me ajudaria, mais não deu!

Não sei como posso fazer isso...

Aquelas soluções que me passou eu entendi +/- Fulvio.

Link para o comentário
Compartilhar em outros sites

  • 0

Boa noite.

Desculpa me meter na conversa.

Eu trabalho com MySQL e no MySQL tem um comando que resolve o seu

problema, eu só não sei se funciona para o SQL Server também, pelo que

estou aprendendo na faculdade, esse comando funcionará.

Para fazer isso, basta usar o comando UNIQUE, por exemplo:

NUMERORM integer not null UNIQUE,

Basta acrescentar esse comando (UNIQUE) nos dois campos

Abraço.

Editado por Ricardo Portolan
Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia Ricardo,

Não tem q se desculpar não... rs. Ideias são sempre bem vindas!! :.)

Este comando existe sim no SQL. Na segunda opção que descrevi:

- Criar a coluna CODIGO não como PK, mas indexá-la e colocá-la como única. Seria a "mesma coisa" de uma PK)

É exatamente isto. A difererença será criar um índice, pois o acesso será direto na coluna.

Fells, os números NUMERORM e NUMEROAMOSTRA não podem se repetir, ok? Mas devem ser os dois juntos ou podem se repetir separados?

Quero dizer:

NUMERORM=100 , NUMEROAMOSTRA=200

NUMERORM=100 , NUMEROAMOSTRA=201

Se levar em consideração os dois números juntos eles não se repetem. Se for assim, terá que criar um indice composto único (utilizando o comando UNIQUE...rs...)

Se for assim:

NUMERORM=100 , NUMEROAMOSTRA=200

NUMERORM=101 , NUMEROAMOSTRA=201

Poderá criar um indice "simples" e único para cada coluna. Ok?

Link para o comentário
Compartilhar em outros sites

  • 0

Ricardo, Fulvio... eu jurava que tinha deixado alguma resposta pra vocês aqui sobre nosso assunto mais lembrei que no dia quando estava escrevendo o pessoal mexeu na força e caiu tudo aqui... ai quando voltou acabei esquecendo...

Então galera... fiz o que o Fulvio disse sobre o comando Unique...

Importei as tebelas que queria novamente e inseri Unique nos campos que precisavam ser unicos!

Ai deu certinho!!

Agradecido!!!

Sei que é quinta, mais tenham um bom fds.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...