Fórum tratamento de constraint em importação de dados #349223

19/11/2007

0

Bom galera a minha dúvida é a seguinte:

tenho uma tabela onde a chave primaria é composta por mais de 1 campo.

se a inclusão nessa tabela fosse feita manualmente beleza, porque ou verificava se já existe o registro no banco antes de incluir ou deixava a própria constraint bloquear ai tratava a mensagem de erro.
Só que o problema é que a inclusão não é feita manualmente e sim através de uma importação de um arquivo texto onde sempre terá em média de 30.000 a 50.000 registros à serem importados.
Então imaginem a cada registro fazer um select pra verificar se ele já existe seria inviável.

seria possivel bloquear a dudlicidade através da constraint e continuar a importação dos demais registros ????

suponha que o arquivo texto tenha 30.000 registro, quando cheqar no registro 20.556 a constraint bloquear, como continuar importando os proximos regostros ??

espero receber sugestões.


Fabiano Góes

Fabiano Góes

Responder

Posts

19/11/2007

Comodelphi

um try .. except talvez, tratar o erro retornado se violação de chave, dependendo do componente de acesso que vc usa, ai deixa o processo continuar;


Responder

Gostei + 0

19/11/2007

Fabiano Góes

um try .. except talvez, tratar o erro retornado se violação de chave, dependendo do componente de acesso que vc usa, ai deixa o processo continuar;


comodelphi,

obrigado pela atenção mais o except não resolveu.

eu uso Delphi7->firebird1.5

executo os insert através do método: ExecuteDirect(); do componente SQLConnection


Responder

Gostei + 0

19/11/2007

Comodelphi

Mas o que acontece? o programa continua rodando? não gera exceção de nenhum tipo?.


Responder

Gostei + 0

19/11/2007

Joaoshi

Colega, talvez colocar numa trigger BeforeInsert da tabela e verificar
IF(EXISTS(SELECT CHAVE1,CHAVE2 FROM TABELA WHERE ....)) THEN EXCEPTION
Acredito que o Try Except que o colega falou no outro post passe a funcionar.

Espero ter ajudado.


Responder

Gostei + 0

20/11/2007

Fabiano Góes

Mas o que acontece? o programa continua rodando? não gera exceção de nenhum tipo?.


gera o except e para o processo



Colega, talvez colocar numa trigger BeforeInsert da tabela e verificar IF(EXISTS(SELECT CHAVE1,CHAVE2 FROM TABELA WHERE ....)) THEN EXCEPTION Acredito que o Try Except que o colega falou no outro post passe a funcionar. Espero ter ajudado.


vou criar a trigger pra fazer um teste


Responder

Gostei + 0

20/11/2007

Comodelphi

voce botou o try..except dentro do loop?


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar