[firebase-br] RES: RES: Ajuda com SQL (Insert Into)

Antonio Carlos a.lima.silva em terra.com.br
Qua Fev 2 17:26:30 -03 2011


Vou dar uma do contra aqui, quando vc faz select max em um contesto normal
de transação, se esse select for feito por duas estações "simultaneamente"
para as duas retornarão o mesmo valor e vai haver violação da chave.

Att.
Antonio Carlos



Confidencialidade: A informação contida nesta mensagem de e-mail, incluindo
quaisquer anexos, é confidencial e está reservada apenas à pessoa ou
entidade para a qual foi endereçada. Se você não é o destinatário ou a
pessoa responsável por encaminhar esta mensagem ao destinatário, você está,
por meio desta, notificado que não deverá rever, retransmitir, imprimir,
copiar, usar ou distribuir esta mensagem de e-mail ou quaisquer anexos. Caso
você tenha recebido esta mensagem por engano, por favor, contate o remetente
imediatamente e apague esta mensagem de seu computador ou de qualquer outro
banco de dados. Muito obrigado. 

-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Diego Maccari
Enviada em: quarta-feira, 2 de fevereiro de 2011 14:50
Para: FireBase
Assunto: Re: [firebase-br] RES: Ajuda com SQL (Insert Into)

Prezado André

Primeiramente obrigado por sua disposição

Substitui a função GEN_ID pela função MAX() sendo assim
onde eu teria:

INSERT INTO TB_C170 (ID, CNPJ_IMP, MES_IMP, ANO_IMP, REG, NUM_ITEM, 
COD_ITEM, DESCR_COMPL, QTD, UNID, VL_ITEM, VL_DESC, IND_MOV, CST_ICMS, CFOP,

COD_NAT, VL_BC_ICMS, ALIQ_ICMS, VL_ICMS, VL_BC_ICMS_ST, ALIQ_ST, VL_ICMS_ST,

IND_APUR, CST_IPI, COD_ENQ, VL_BC_IPI, ALIQ_IPI, VL_IPI, CST_PIS, VL_BC_PIS,

ALIQ_PIS, QUANT_BC_PIS, ALIQ_PIS_REAIS, VL_PIS, CST_COFINS, VL_BC_COFINS, 
ALIQ_COFINS, QUANT_BC_COFINS, ALIQ_COFINS_REAIS, VL_COFINS, COD_CTA, 
ID_C100) VALUES ((SELECT GEN_ID(GEN_TB_C170_ID, 1) FROM RDB$DATABASE), 
'00.000.000/0000-00', 'Janeiro', '2010', 'C170', 1, '42196', NULL, '16', 
'UN', '606.4', '0', '0', '060', '1403', '1403', '0', '0', '0', '0', '0', 
'0', '0', NULL, NULL, '0', '0', '0', '04', '0', '1.65', NULL, NULL, '0', 
'04', '0', '7.6', NULL, NULL, '0', '604', (SELECT GEN_ID(GEN_TB_C100_ID, 0) 
FROM RDB$DATABASE));

Passaria a ser:

INSERT INTO TB_C170 (ID, CNPJ_IMP, MES_IMP, ANO_IMP, REG, NUM_ITEM, 
COD_ITEM, DESCR_COMPL, QTD, UNID, VL_ITEM, VL_DESC, IND_MOV, CST_ICMS, CFOP,

COD_NAT, VL_BC_ICMS, ALIQ_ICMS, VL_ICMS, VL_BC_ICMS_ST, ALIQ_ST, VL_ICMS_ST,

IND_APUR, CST_IPI, COD_ENQ, VL_BC_IPI, ALIQ_IPI, VL_IPI, CST_PIS, VL_BC_PIS,

ALIQ_PIS, QUANT_BC_PIS, ALIQ_PIS_REAIS, VL_PIS, CST_COFINS, VL_BC_COFINS, 
ALIQ_COFINS, QUANT_BC_COFINS, ALIQ_COFINS_REAIS, VL_COFINS, COD_CTA, 
ID_C100) VALUES ((SELECT GEN_ID(GEN_TB_C170_ID, 1) FROM RDB$DATABASE), 
'00.000.000/0000-00', 'Janeiro', '2010', 'C170', 1, '42196', NULL, '16', 
'UN', '606.4', '0', '0', '060', '1403', '1403', '0', '0', '0', '0', '0', 
'0', '0', NULL, NULL, '0', '0', '0', '04', '0', '1.65', NULL, NULL, '0', 
'04', '0', '7.6', NULL, NULL, '0', '604', (SELECT MAX(ID)FROM TB_C100));

Gostei do resultado ate porque com MAX() o maior ID da tabela e com GEN_ID 
poderia ter problemas caso por algum motivo o
INSERT da TB_C700 não fosse executado corretamente,
muito obrigado pela dica, fico te devendo uma, valeu...


--------------------------------------------------
From: "andre conrado" <acf.andre em gmail.com>
Sent: Wednesday, February 02, 2011 2:07 PM
To: "FireBase" <lista em firebase.com.br>
Subject: Re: [firebase-br] RES: Ajuda com SQL (Insert Into)

> Diego, ainda qto ao ID, vc não precisa usar o SELECT GEN_ID no INSERT,
> pode usar o GEN_ID sozinho como se faz com uma outra função qualquer.
>
> Agora, eu acredito q seria mais seguro se vc buscasse na tabela
> TB_C100 o último usando um SELECT MAX(ID) FROM TB_C100. Isso evitaria
> q numa possível manutenção futura (onde a forma de atualização do
> campo ID mudasse) a inserção ficasse inconsistente.
>
> Em 28/01/11, Carlos Alberto<cacgodinho em gmail.com> escreveu:
>> Diego,
>>
>> Tive problemas com inserção de datas no FB mas consegui resolver.
>> Faça da seguinte forma que funciona redondo...
>>
>> sqlstr="INSERT INTO TABELA (Codigo, Data) VALUES ('" & varCodigo & '", '"

>> &
>> format(varData,"dd.mm.yyyy") & "')
>>
>> Espero que ajude...
>>
>> Carlos Alberto.
>>
>> ----- Original Message -----
>> From: "Diego Maccari" <diegomaccari em ig.com.br>
>> To: "FireBase" <lista em firebase.com.br>
>> Sent: Friday, January 28, 2011 9:13 AM
>> Subject: Re: [firebase-br] RES: Ajuda com SQL (Insert Into)
>>
>>
>> Julio muito obrigado pela dica mas este erro eu já consertei aqui o 
>> problema
>> estava na falta de uma coluna não era o SELECT GEN_ID
>> o firebird aceita varios select's dentro do insert.
>>
>> mas pra minha felididade agora estou com problema em um campo DATE que 
>> não
>> aceita um determinado valor exemplo = '10/01/2011'
>> como seria a maneira correta de inserir datas no fb  ?
>>
>> --------------------------------------------------
>> From: "Julio Cezar - Desenvolvimento" <juliocezarsilva em sfox.com.br>
>> Sent: Friday, January 28, 2011 8:17 AM
>> To: "'FireBase'" <lista em firebase.com.br>
>> Subject: [firebase-br] RES:  Ajuda com SQL (Insert Into)
>>
>>> Não sei se ajuda mas se ao inserir na tabela TB_C100_ID vc usar da
>>> seguinte
>>> forma.
>>>
>>> INSERT INT TB_C100_ID (SEUS CAMPOS) VALUES (OS VALORES) RETURNING O ID 
>>> DA
>>> TABELA
>>>
>>> Você têm o id que inseriu nessa tabela disponivel em seu recordset 
>>> depois
>>> basta fazer o insert na outra tabela, desta forma não funcionaria não?
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> Nada substitui o ser humano! Inst. Faber Ludens
>>> -----Mensagem original-----
>>> De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br]
>>> Em
>>> nome de Jeter Rabelo Ferreira
>>> Enviada em: quinta-feira, 27 de janeiro de 2011 17:52
>>> Para: FireBase
>>> Assunto: Re: [firebase-br] Ajuda com SQL (Insert Into)
>>>
>>> GEN_ID(GEN_TB_C100_ID, 1)
>>>
>>> 2011/1/27 Diego Maccari dos Santos <diegomaccari em ig.com.br>
>>>
>>>> Ajuda com SQL (Insert Into)
>>>>
>>>> Pessol estou tentando inserir um registro no BD (Firebird) onde o 1º
>>>> campo
>>>> ID é chave primaria que recebe o valor de um generator e o ultimo campo

>>>> é
>>>> um
>>>> campo INTEIRO no qual estou inserindo o valor da chve primaria de outra
>>>> tabela porem este campo não é chave estrangeira estou tentando pegar o
>>>> valor
>>>> do generator e inserir no campo não está dando certo uso o seguinte 
>>>> SQL:
>>>>
>>>> INSERT INTO TB_C170 (ID, CNPJ_IMP, MES_IMP, ANO_IMP, REG, NUM_ITEM,
>>>> COD_ITEM, DESCR_COMPL, QTD, UNID, VL_ITEM, VL_DESC, IND_MOV, CST_ICMS,
>>>> CFOP,
>>>> COD_NAT, VL_BC_ICMS, ALIQ_ICMS, VL_ICMS, VL_BC_ICMS_ST, ALIQ_ST,
>>>> VL_ICMS_ST,
>>>> IND_APUR, CST_IPI, COD_ENQ, VL_BC_IPI, ALIQ_IPI, VL_IPI, CST_PIS,
>>>> VL_BC_PIS,
>>>> ALIQ_PIS, QUANT_BC_PIS, ALIQ_PIS_REAIS, VL_PIS, CST_COFINS, 
>>>> VL_BC_COFINS,
>>>> ALIQ_COFINS, QUANT_BC_COFINS, ALIQ_COFINS_REAIS, VL_COFINS, COD_CTA,
>>>> ID_C100) VALUES ((SELECT GEN_ID(GEN_TB_C170_ID, 1) FROM RDB$DATABASE),
>>>> '00.000.000/0000-00', 'Janeiro', '2010', 'C170', , '73695', NULL, '49',
>>>> 'UN', '269,5', '0', '0', '010', '1403', '1403', '0', '7', '0', '0', 
>>>> '0',
>>>> '0', '0', NULL, NULL, '0', '0', '0', '01', '269,5', '1,65', NULL, NULL,
>>>> '4,45', '01', '269,5', '7,6', NULL, NULL, '20,48', '604', (SELECT
>>>> GEN_ID(GEN_TB_C100_ID, 0) FROM RDB$DATABASE));
>>>>
>>>> Onde está o erro ???
>>>> Alguém pode ajudar?
>>>>
>>>> Acho que o erro está no ultimo SELECT GEN_ID que coloquei pra pegar o 
>>>> ID
>>>> atual da outra tabela, a tabela chama TB_C100 e o Generation
>>>> GEN_TB_C100_ID.
>>>> ______________________________________________
>>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>>
>>>
>>>
>>>
>>> --
>>> []'s
>>> Jéter Rabelo Ferreira
>>> ______________________________________________
>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>
>>>
>>> ______________________________________________
>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
>
>
> -- 
> Um Abraço,
> André Conrado.
>
> 055 21 9176-7013 - Claro
> 055 21 9896-5449 - Vivo (apenas mensagens SMS)
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: 
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa 


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista