Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Como popular uma tabela com dados de outra?

Bom dia pessoal,

eu me deparei com esse problema no meu serviço , tenho q puxar 5-4 dados de uma tabela, onde o primary key é a mesma

create table info_master(id_serial text, nome text not null, funcao text, clients text,data_adm date , chk_point int, banda int, data_aum_salarial date, ausn_atestd text,primary key (id_serial),foreign key (nome) references info_start (nome),foreign key (funcao) references info_start (funcao),foreign key (clients) references info_start (clients));

e da o seguinte erro :

ERROR:  there is no unique constraint matching given keys for referenced table "info_start"

Como faço para popular essa nova tabela com os dados da outra, e pegar a mesma PK ?

5 respostas

Boa noite, gostaria de saber se vai inserir os mesmos dados na tabela, quais dados seriam? tem a possibilidade de usar um insert select

Então Raul, pense em uma tabela com basica de informação:

CREATE TABLE info {
    id_oficial serial PRIMARY KEY,
    nome text NOT NULL,
    funcao text,
    proj_done text,
};

se eu quisesse popular uma outra tabela com algumas das informações dessa , usar a mesma PK, como eu faria?

Pois ali eu tentei fazer pela minha logica, fazendo FK de cada coluna que queria pegar.

create table info_master(
id_serial text, 
nome text not null,
funcao text, 
clients text,
data_adm date , 
chk_point int,
 banda int, 
data_aum_salarial date, 
ausn_atestd text,

primary key (id_serial),foreign key (nome) references info_start (nome),foreign key (funcao) references info_start (funcao),foreign key (clients) references info_start (clients));
solução!

Bom dia, voce usaria o seguinte código

create table info_master( id_serial serial PRIMARY KEY, nome text not null, funcao text, clients text, data_adm date , chk_point int, banda int, data_aum_salarial date, ausn_atestd text, id_oficial_fk int, foreign key (id_oficial_fk) references info(id_oficial) ); insert into info values (1,'RAUL','MASTER','TESTES1');

/aqui é feito o insert select/

INSERT INTO INFO_MASTER(ID_SERIAL,NOME,FUNCAO,ID_OFICIAL_FK) SELECT 1,NOME,FUNCAO, ID_OFICIAL ID_OFICIAL_FK FROM INFO

bom dia, nao verifiquei o nome da tabela info_start, mas seria parecido o sql

insert into info_master

insira seu código aqui

(os campos que vc quer inserir na tabela) select (campos que tem os dados, na mesma ordem do insert) from info_start

Bom dia Raul, Quando vc fala parecido com SQL, seria pq uso o Postgres e vc outro tipo? Muito obriado pela ajuda, é que minha logica de Db é ruim ainda, agradeço a ajuda vou testar !!!!