É possível utilizar um dado de uma tabela presente em um schema em uma tabela de outro schema, através de uma chave estrangeira?
É possível utilizar um dado de uma tabela presente em um schema em uma tabela de outro schema, através de uma chave estrangeira?
Oi, Gabriel! Tudo bom contigo?
Peço desculpas pela demora em retornar.
Sim, é possível! Para isso, precisamos ter schemas diferentes e, durante a criação das nossas tabelas, indicar a qual schema cada uma delas pertence. Durante esta etapa, já podemos determinar as chaves primárias e estrangeiras, que serão importantes para criar um relacionamento entre essas tabelas.
Abaixo, trago um exemplo genérico que ilustra como podemos trabalhar com esta ideia:
Criar o schema_1
:
CREATE SCHEMA schema_1;
Criar o schema_2
:
CREATE SCHEMA schema_2;
Criar a tabela referente ao schema_1
:
CREATE TABLE schema_1.tabela_1 (
id_1 SERIAL PRIMARY KEY,
nome_1 VARCHAR(50)
);
Criar a tabela referente ao schema_2
:
CREATE TABLE schema_2.tabela_2 (
id_2 SERIAL PRIMARY KEY,
nome_2 VARCHAR(50),
id_1 INTEGER REFERENCES schema_1.tabela_1(id_1)
);
Note que, durante a criação da segunda tabela, foi adicionada, na última linha, uma chave estrangeira que faz referência à tabela_1
, também denominada id_1
.
Com tudo feito, já podemos utilizar dados presentes em ambas as tabelas, realizando, por exemplo, consultas simples, filtros, junções etc. O único ponto de atenção é sempre salientar a qual schema ela se refere, assim: schema_2.tabela_2
.
Espero ter ajudado com a explicação! Se surgirem novas dúvidas, estarei aqui para conversarmos sobre elas.
Abraços!