Insert a partir de select cada registro numa transação diferente.

17/03/2016

1

Olá Amigos,

Estou com problema numa insert de dados numa tabela a partir de outra, mas vou colocar uma situação simples para que não haja problema de entendimentos.

Uso o PostgreSQL 9.2 e tenho duas tabelas abaixo:

movimento com as seguintes colunas: cod(int), data(date), complemento(char(60)), valor(numeric(10,2))
e os seguintes dados respectivamente:
(1,'2016-03-10','Caneta',1.00)
(2,'2016-03-10','Caderno',5.00)

movalter com as seguintes colunas: cod(int), data(date), complemento(char(60)), valor(numeric(10,2))
e os seguintes dados respectivamente:
(1,'2016-03-11','Sacola',1.00)
(2,'2016-03-11','Papel',0.60)

Preciso inserir os dados da tabela movalter, mas a coluna "cod" tem que seguir a sequencia e ficar com o seguinte resultado:

movimento:
(1,'2016-03-10','Caneta',1.00)
(2,'2016-03-10','Caderno',5.00)
(3,'2016-03-11','Sacola',1.00)
(4,'2016-03-11','Papel',0.60)

Qual seria o insert correto?

Eu tentei este insert, mas não deu certo:

insert into movimento
select (select max(cod)+1 from movimento),data,complemento,valor from movalter

segue scripts para facilitar a resposta:


create table movimento(
cod int primary key,
data date,
complemento char(60),
valor numeric(10,2));

create table movalter(
cod int primary key,
data date,
complemento char(60),
valor numeric(10,2));

insert into movimento
values (1,'2016-03-10','Caneta',1.00),(2,'2016-03-10','Caderno',5.00);

insert into movalter
values (1,'2016-03-11','Sacola',1.00),(2,'2016-03-11','Papel',0.60);
Responder