PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Configurando chave estrangeira com tipo de dados diferente


Na verdade, faz sentido aqui está o porquê:

Em uma tabela, você pode definir qualquer coluna como sua chave primária. Portanto, pode ser inteiro, duplo, string, etc. Mesmo que hoje em dia, usamos principalmente inteiros ou, mais recentemente, strings como chave primária em uma tabela.

Como a chave estrangeira está apontando para a chave primária de outra tabela, é por isso que você precisa especificar o tipo de dados da chave estrangeira. E obviamente precisa ser o mesmo tipo de dados.

EDITAR:

As implementações SQL são negligentes neste caso, como podemos ver:elas permitem tipos compatíveis (INT e BIG INT, Float ou DECIMAL e DOUBLE) mas por sua conta e risco . Assim como podemos ver no seu exemplo, abaixo.

No entanto, as normas SQL especificam que ambos os tipos de dados devem ser iguais. Se o tipo de dados for caractere, eles devem ter o mesmo comprimento, caso contrário, se for inteiro, eles devem ter o mesmo tamanho e deve ambos ser assinado ou ambos não assinados .

Você pode ver por si mesmo aqui, um capítulo de um livro sobre MySQL publicado em 2003.

espero que isso responda sua pergunta.