ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Chave primária permitindo duplicidade[Resolvido]

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
nildglan
Colaborador
Colaborador


Registrado: Sábado, 16 de Agosto de 2008
Mensagens: 1564
Localização: Goianésia do Pará

MensagemEnviada: Sáb Fev 05, 2011 10:18 pm    Assunto: Chave primária permitindo duplicidade[Resolvido] Responder com Citação

Pessoal ja dei uma estuda grande sobre banco de dados e o que aprendir é que chave primária em um campo é pra não deixar da duplicidade e fiz teste em um banco que tem e realmente não deixa inserir o numero que ja tem, mai o que mais me deixa intrigado é que eu tenho um banco aqui em que o programador fez muita programação baseado em uma chave que vc coloca o mesmo valor repetida vez exemplo no campo chave tem o valor 10 repetido varios vezes e gostaria de saber como ele fez

veja a estrutura da tabela dele


CREATE TABLE ENTIDADES_TELEFONES (
CODIGO_ENTIDADE CHAVE_GRANDE NOT NULL /* CHAVE_GRANDE = INTEGER NOT NULL CHECK (VALUE > 0) */,
ITEM CHAVE_PEQUENA NOT NULL /* CHAVE_PEQUENA = SMALLINT NOT NULL CHECK(VALUE >= 0) */,
CODIGO_TIPO_CONTATO CHAVE_PEQUENA NOT NULL /* CHAVE_PEQUENA = SMALLINT NOT NULL CHECK(VALUE >= 0) */,
DDI DESCRICAO_02 DEFAULT 55 /* DESCRICAO_02 = CHAR(2) */,
DDD DESCRICAO_02 /* DESCRICAO_02 = CHAR(2) */,
NUMERO_TELEFONE DESCRICAO_20 COLLATE PXW_INTL850 /* DESCRICAO_20 = VARCHAR(20) */,
CONTATO DESCRICAO_30 /* DESCRICAO_30 = VARCHAR(30) */
);




/******************************************************************************/
/*** Primary Keys ***/
/******************************************************************************/

ALTER TABLE ENTIDADES_TELEFONES ADD CONSTRAINT PK_ENTIDADES_TELEFONES PRIMARY KEY (CODIGO_ENTIDADE, ITEM);


/******************************************************************************/
/*** Foreign Keys ***/
/******************************************************************************/

ALTER TABLE ENTIDADES_TELEFONES ADD CONSTRAINT FK1_ENTIDADES_TELEFONES FOREIGN KEY (CODIGO_ENTIDADE) REFERENCES ENTIDADES (CODIGO_ENTIDADE) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ENTIDADES_TELEFONES ADD CONSTRAINT FK_ENTIDADES_TELEFONES FOREIGN KEY (CODIGO_TIPO_CONTATO) REFERENCES TIPO_CONTATO (CODIGO_TIPO_CONTATO) ON UPDATE CASCADE;


Editado pela última vez por nildglan em Ter Fev 08, 2011 12:00 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
temuchin
Profissional
Profissional


Registrado: Segunda-Feira, 12 de Dezembro de 2005
Mensagens: 584
Localização: Marte

MensagemEnviada: Seg Fev 07, 2011 10:27 am    Assunto: Responder com Citação

Olá

Pelo que vi, o cara usou uma Chave Primária Composta na tabela
Código:

ALTER TABLE ENTIDADES_TELEFONES ADD CONSTRAINT PK_ENTIDADES_TELEFONES PRIMARY KEY (CODIGO_ENTIDADE, ITEM);


Nesse caso, a duplicidade é verificada de acordo com o conteúdo dos campos codigo_entidade e item em conjunto, não importando seus valores individuais.

Dê uma olhada no link abaixo... o cara explica as diferenças entre Chaves Primárias Simples e Chaves primárias Compostas

http://www.luis.blog.br/chave-primaria-simples-e-chave-primaria-composta.aspx

Espero que te ajude

Abraço
_________________
A santidade dos pobres é invenção dos ricos

if ( topico.resolvido = true ) then begin
    titulo.caption := topico.titulo + ' [RESOLVIDO] ';
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
nildglan
Colaborador
Colaborador


Registrado: Sábado, 16 de Agosto de 2008
Mensagens: 1564
Localização: Goianésia do Pará

MensagemEnviada: Seg Fev 07, 2011 6:32 pm    Assunto: Responder com Citação

temuchin e como é que faço para localizar determinado registro pelo código se existe varios iguais exemplo?
eu quero apagar determinado registro como localizar só ele?
eu uso dbexpress e Firebird
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Seg Fev 07, 2011 9:22 pm    Assunto: Responder com Citação

nildglan escreveu:
temuchin e como é que faço para localizar determinado registro pelo código se existe varios iguais exemplo?
eu quero apagar determinado registro como localizar só ele?
eu uso dbexpress e Firebird
se tem varios repetidos vc deve colocar mais uma condição na clausula where que diferencia um do outro, assim vc consegue ir no alvo certo.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
rafmattos
Colaborador
Colaborador


Registrado: Quinta-Feira, 11 de Fevereiro de 2010
Mensagens: 3416
Localização: Campo Grande/MS

MensagemEnviada: Ter Fev 08, 2011 8:24 am    Assunto: Responder com Citação

nildglan escreveu:
temuchin e como é que faço para localizar determinado registro pelo código se existe varios iguais exemplo?
eu quero apagar determinado registro como localizar só ele?
eu uso dbexpress e Firebird


como disse o adriano vc vai ter q colocar a chave ou outro campo q vc possa indentificalo como unico



Código:

where CODIGO_ENTIDADE = valor
   and  ITEM = valor
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
BrunoMoreyra
Colaborador
Colaborador


Registrado: Quinta-Feira, 26 de Novembro de 2009
Mensagens: 1398
Localização: Goiânia - GO / Brasília - DF

MensagemEnviada: Ter Fev 08, 2011 3:59 pm    Assunto: Responder com Citação

Boa tarde,

você terá que utilizar a chave primária, que é composta. Terá que utilizar todos os campos pertencentes na chave primária.

nildglan escreveu:
temuchin e como é que faço para localizar determinado registro pelo código se existe varios iguais exemplo?
eu quero apagar determinado registro como localizar só ele?
eu uso dbexpress e Firebird

_________________
Atencisamente,

Bruno Moreira Batista.
http://www.kawek.com.br/BrunoBatista
Skype: Bruno_Batysta
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB