Fórum Organização dos INSERTs #472487

09/03/2014

0

Boa noite pessoal, estou fazendo um script .sql com inúmeros inserts, o que está me complicando a vida é a organização destes inserts, se eu coloco a ordem de gravação nas tabelas invertida o ISQL TOOL dá erro, por exemplo:

Ordem correta, grava sem erros:

INSERT INTO BANCO (BAN_ID, BAN_NOME, BAN_AGENCIA, BAN_CONTA, BAN_SALDO)
VALUES (2, ''Cofre Local'', '''', '''', ''-'');

INSERT INTO MOV_BANCO (MVB_ID, BAN_ID, MVB_DATA, MVB_DESCRICAO, MVB_VALOR, MVB_SALDO, MVB_TIPO)
VALUES (3, 2, ''07/03/2014'', ''Fech.Caixa'', ''24,00'', ''-'', 0);


Ordem INCORRETA, não grava, dá erros:

INSERT INTO MOV_BANCO (MVB_ID, BAN_ID, MVB_DATA, MVB_DESCRICAO, MVB_VALOR, MVB_SALDO, MVB_TIPO)
VALUES (3, 2, ''07/03/2014'', ''Fech.Caixa'', ''24,00'', ''-'', 0);

INSERT INTO BANCO (BAN_ID, BAN_NOME, BAN_AGENCIA, BAN_CONTA, BAN_SALDO)
VALUES (2, ''Cofre Local'', '''', '''', ''-'');


Eu gostaria de não ter de me preocupar com a ordem, tem alguma forma de fazer isto?

Desde já agradeço.
Vinicius Cruz

Vinicius Cruz

Responder

Posts

10/03/2014

Marisiana Battistella

Olá Vinicius!
Você somente conseguirá inserir antes da tabela MOV_BANCO se o BAND_ID que vc está informando já existir na tabela BANCO, se ele não existir sempre ocorrerá erro.
No meu ponto de vista não tem como vc inserir sem se preocupar com a ordem, pois é regra verificar, antes de inserir, se o ID da chave estrangeira que você está referenciando já cadastrado.
E se vc estiver realizando o cadastro dos dois ao mesmo tempo, sempre terá que inserir antes na tabela BANCO e verificar se o item foi inserir sem erro, para depois inserir o MOV_BANCO.
Responder

Gostei + 0

10/03/2014

Vinicius Cruz

Obrigado Marisiana!!

O problema é exatamente este, a verificação da chave estrangeira. O que acontece é o seguinte, diante da necessidade de gerar um script sql de toda a base de dados, eu usei o FBexport para fazer isto, porém ele somente gera uma tabela por vez, então criei um sistema que lista todas as tabelas e passa elas para o FBexport uma a uma e salva os retornos em um arquivo, até aí funcionou 100% o problema é a ordem em que são lançados esses retornos no arquivo, terei que encontrar uma forma do sistema organizar cada tabela na sua ordem correta.

Mais uma vez, obrigado pela atenção.
Responder

Gostei + 0

21/03/2014

Marisiana Battistella

Por nada!
Estava pensando no que vc falou...
Se você consegue inserir na ordem correta, você só precisaria arrumar uma forma de manter a ordem dos retornos, talvez uma enumeração, ou armazenando num vetor...
Assim quando vc escreve no arquivo, você escreve na ordem definida...
Não sei se essa idéia é útil, se não t ajudar em nada desconsidera!... =D
Responder

Gostei + 0

24/03/2014

Vinicius Cruz

Então, o problema é saber qual seria a ordem correta, eu realmente fiz isto que você disse, organizei toda a lista de inserts em uma string list, acontece que cada banco de dados que eu pegar a lista de tabelas, a ordem muda. O ideal seria mesmo se tivesse como eu enviar a lista de inserts independentemente da ordem e o sgbd somente verificaria os erros ao dar o commit entende. Se tiver uma forma de fazer isto seria perfeito.

Abraço!!
Responder

Gostei + 0

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

Aceitar