checar cpf e rg para não existirem registros duplicados
Olá pessoal. estou fazendo um programinha, com interbase 6 e delphi 7, e numa tabela tando o rg quanto o cpf não podem ter 2 registros iguais no banco. Alguem pode me ajudar com uma store procedure que não deixe existir dois registros iguais e me rertorne uma mensagem de erro quando ja existir um registro igual no banco. Uma dica, ou um tutorial é tudo oque eu preciso.
Eu coloquei a chave primaria no rg, isto já impede que ele tenha dois registros iguais, mas preciso tambem no cpf.
Obrigado pela atenção e por qualquer ajuda.
Um forte abraço a todos!
Eu coloquei a chave primaria no rg, isto já impede que ele tenha dois registros iguais, mas preciso tambem no cpf.
Obrigado pela atenção e por qualquer ajuda.
Um forte abraço a todos!
Jorgerock
Curtidas 0
Respostas
Bruno Belchior
03/05/2005
adicione a uma contraint [b:a86d3ae493]unique[/b:a86d3ae493] no CPF...
Alter Table SuaTabela Add Constraint CPFUnico Unique (CPF);
GOSTEI 0
Jorgerock
03/05/2005
eu tento fazer assim mas dá o seguinte erro:
Unsuccessful metadata update
Column: CPF not defined as NOT NULL - cannot be used in PRIMARY KEY/UNIQUE constraint definition
Statement: Alter Table clientes Add Constraint CPFUnico Unique (CPF)
mas mesmo assim o campo não poderia ser not null, porque algumas pessoas não têm cpf, eu precisava de algo como uma store procedure que verificasse se já não existe algum registro e me retornasse alguma mensagem em tempo de execução!
eu tinha deixado o campo cpf not null unique, mas daí não dá.
Mesmo assim muito obrigado pela atenção e pela ajuda!
Um forte abraço!
Unsuccessful metadata update
Column: CPF not defined as NOT NULL - cannot be used in PRIMARY KEY/UNIQUE constraint definition
Statement: Alter Table clientes Add Constraint CPFUnico Unique (CPF)
mas mesmo assim o campo não poderia ser not null, porque algumas pessoas não têm cpf, eu precisava de algo como uma store procedure que verificasse se já não existe algum registro e me retornasse alguma mensagem em tempo de execução!
eu tinha deixado o campo cpf not null unique, mas daí não dá.
Mesmo assim muito obrigado pela atenção e pela ajuda!
Um forte abraço!
GOSTEI 0
Gandalf.nho
03/05/2005
Mais fácil do que usar SP acho que seria uma trigger que dispararia automaticamente a cada inserção/edição no banco e tb poderia enviar uma exceção para a aplicação cliente.
GOSTEI 0
Edilcimar
03/05/2005
e quanto ao RG [b:b4b450a423]existe[/b:b4b450a423] duplicação, basta ser de outro estado
GOSTEI 0
Jorgerock
03/05/2005
Obrigado pela ajuda de todos. Desculpem a minha inexperiência, é a primeira vez que eu tenho que fazer algo assim, será que vocês poderiam me ajudar com essa trigger. Algum exemplo, qualquer coisa.
Vocêm vão estar me ajudando a quebrar um galho enorme, já estão ajudando é claro.
Um forte abraço a todos!
Vocêm vão estar me ajudando a quebrar um galho enorme, já estão ajudando é claro.
Um forte abraço a todos!
GOSTEI 0
Jorgerock
03/05/2005
Coloquei um codigo no botão que salva,
dmdados.qrycpf.Close;
dmdados.qrycpf.Sql.Clear;
dmdados.qrycpf.Sql.Add(´select cpf from cadastro´);
dmdados.qrycpf.Sql.Add(´where cpf = :cpf´);
dmdados.qrycpf.Params[0].AsString :=edtcpf.text;
dmdados.qrycpf.Open;
If not dmdados.qrycpf.IsEmpty Then
begin
application.messagebox(´CPF Repetido, AVISO!´);
Exit;
end
Else
dmdados.tblcadastro.post;
ele não deixa que sejam salvos registros duplicados, agora oque eu não consigo fazer é quando eu vou editar um registro, ele vai dizer que o registro já existe. Eu não consegui fazer ele comparar o codigo do que está sendo editado com o codigo armazenado, para se caso o codigo seja o mesmo ele salve.
Já estou evoluindo com a ajuda de vocês, mas ainda preciso de uma luz.
Muito obrigado pela atenção de todos!
Um forte abraço!
dmdados.qrycpf.Close;
dmdados.qrycpf.Sql.Clear;
dmdados.qrycpf.Sql.Add(´select cpf from cadastro´);
dmdados.qrycpf.Sql.Add(´where cpf = :cpf´);
dmdados.qrycpf.Params[0].AsString :=edtcpf.text;
dmdados.qrycpf.Open;
If not dmdados.qrycpf.IsEmpty Then
begin
application.messagebox(´CPF Repetido, AVISO!´);
Exit;
end
Else
dmdados.tblcadastro.post;
ele não deixa que sejam salvos registros duplicados, agora oque eu não consigo fazer é quando eu vou editar um registro, ele vai dizer que o registro já existe. Eu não consegui fazer ele comparar o codigo do que está sendo editado com o codigo armazenado, para se caso o codigo seja o mesmo ele salve.
Já estou evoluindo com a ajuda de vocês, mas ainda preciso de uma luz.
Muito obrigado pela atenção de todos!
Um forte abraço!
GOSTEI 0