Joao6
#1
Possuo duas tabelas:
create table comunicacao(
item_fk bigint not null,
usuario_fk bigint not null,
primary key (item_fk, usuario_fk)
);
create table mensagem(
id bigserial not null,
texto text,
data_hora timestamp not null,
comunicacao_fk bigint not null,
usuario_fk bigint not null,
primary key(id)
);
Como adicionar uma chave estrangeira na tabela mensagem, a partir da chave primária de comunicação?
Sim, vc só precisa referenciar os dois campos…
Sua tabela mensagem ficaria algo assim:
create table mensagem(
...outras colunas
item_fk bigint not null,
usuario_fk bigint not null,
...
primary key(id),
constraint <nome da fk> foreign key (item_fk, usuario_fk) references comunicacao(item_fk, usuario_fk)
);
Detalhe: eu nunca fui com a cara de chave primárias compostas e dou sempre preferência a um id único. Até agora não me causou problemas.
1 curtida