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

时间:2018-08-29 00:27:36

标签: database postgresql integer foreign-keys bigint

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

  1. 帖子
  2. 评论

我的posts表具有id类型的bigint列,而我的comments.post_id外键的类型为integer

可能出什么问题了?为什么建议comments.post_id也属于bigint类型?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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