为什么我的 FK 列和引用的列应该具有相同的类型?

Why should my FK column and the referenced column have the same type?

假设我有两个共享关系的 table:

  1. 帖子
  2. 评论

我的 posts table 有一个 id 类型的列 bigint 而我的 comments.post_id 外键是 integer 类型。

可能会出什么问题?为什么建议comments.post_id也是bigint类型?

big int可以大到9,223,372,036,854,775,807,而int只能到2,147,483,647。因此,如果您的数据增长到足以超过 2,147,483,647(例如 2,147,483,648),您将无法再在 comments.post_id 列中引用 post。

好吧,从数据库的角度来看,如果使用你的数据库的用户插入了一个存在于你的主要关系中的 bigint 而你的关系拒绝了它,因为数据类型不匹配(而且我指的是您的输入大于 int 数据类型的情况),
那么您犯了一个逻辑错误,因为该条目应该被接受,因为它满足 FK 约束。