Fórum Inserto #408618

19/10/2011

0

Boa noite

Gostaria de saber se existe a possibilide de inserir dois registro em uma tabela
utilizando somente um insert, sem utilização de procedure e etc, segue exemplo abaixo :

insert into moeda_cotacao (cod_empr, data, cod_moeda) values (1, 10/20/2011);

Lembrando que o select cod_moeda from moeda retorna dois registros

1 - real
2 - dolar.


Att.
Ricardo Rodrigues
Ricardo Rodrigues

Ricardo Rodrigues

Responder

Posts

20/10/2011

Ricardo Rodrigues

Boa noite

Gostaria de saber se existe a possibilide de inserir dois registro em uma tabela
utilizando somente um insert, sem utilização de procedure e etc, segue exemplo abaixo :

insert into moeda_cotacao (cod_empr, data, cod_moeda) values (1, 10/20/2011,(select cod_moeda from moeda));

Lembrando que o select cod_moeda from moeda retorna dois registros

1 - real
2 - dolar.


Att.
Ricardo Rodrigues
Responder

Gostei + 0

20/10/2011

Gustavo Bretas

Ricardo, no SQL Server eu faria assim:

set formatdate mdy
insert into moeda_cotacao select 1, 10/20/2011, cod_moeda from moeda


Mas no Firebird eu não me lembro se da certo, faça o teste aí depois no diga se deu certo!
O primeiro erro será na data, pelo menos nos Firebirds que eu ja usei a data era no formato DD/MM/YYYY.

Att
Responder

Gostei + 0

21/10/2011

Ricardo Rodrigues

Bem dito por vc mesmo, no sql server funciona, ja no firebird não. E referente a data, pode haver as duas possibilidades de formato, no meu é mmddyyyy



topico em aberto, se alguem tiver uma dica, por favor.
Responder

Gostei + 0

24/10/2011

Gustavo Bretas

Ricardo, quem vai disparar o evento?

Será na primeira vez que abrir o sistema no dia por exemplo?
Responder

Gostei + 0

24/10/2011

Emerson Nascimento

insert into moeda_cotacao (cod_empr, data, cod_moeda)
select 1, current_date, cod_moeda from moeda
Responder

Gostei + 0

24/10/2011

Gustavo Bretas

Emerson,

insert into moeda_cotacao (cod_empr, data, cod_moeda)
select 1, current_date, cod_moeda from moeda


ou

insert into moeda_cotacao select 1, 10/20/2011, cod_moeda from moeda


Não é a mesma coisa? (A não ser a variável current_date)
Se levarmos em consideração que no select retorna todas as três colunas da tabela é como escrevermos INSERT TABELA VALES (1, 2, 3), Concorda?

A não ser que seja uma particularidade do Firebird!
Responder

Gostei + 0

25/10/2011

Emerson Nascimento

Emerson,

insert into moeda_cotacao (cod_empr, data, cod_moeda)
select 1, current_date, cod_moeda from moeda


ou

insert into moeda_cotacao select 1, 10/20/2011, cod_moeda from moeda


Não é a mesma coisa? (A não ser a variável current_date)
Se levarmos em consideração que no select retorna todas as três colunas da tabela é como escrevermos INSERT TABELA VALES (1, 2, 3), Concorda?

A não ser que seja uma particularidade do Firebird!


só é a mesma coisa se a tabela moeda_cotacao tiver apenas esse três campos, e na ordem colocada na select.
para não ficar preso a isso, é melhor discriminar os campos. assim, se houver qualquer alteração na estrutura - inclusão ou reposicionamento dos campos - o insert não será comprometido.
uma coisa muito comum no Firebird é o uso de campos autoincremento, ou aqueles que já têm valor default. se eu quero que seja atribuido o autoincremento no campo ou o seu valor default, eu não indico o campo na lista. então devo especificar a quais campos estou fazendo as atribuições. dessa forma fica legível para quem der manutenção na instrução, e de certa forma garantida a execução, pois não sofrerá influência de qualquer reposicionamendo dos campos da tabela.

Responder

Gostei + 0

28/10/2011

Ricardo Rodrigues

Bom dia Pessoal, venho por meio deste agradeçer a atenção, e dar uma satisfação ao Emerson que o código que você me passou funcionar conforme o esperado. Muito obrigado.



Att.
Ricardo Rodrigues



Tópico encerrado
Responder

Gostei + 0

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

Aceitar