为什么我的 FK 列和引用的列应该具有相同的类型?
Why should my FK column and the referenced column have the same type?
假设我有两个共享关系的 table:
- 帖子
- 评论
我的 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 约束。
假设我有两个共享关系的 table:
- 帖子
- 评论
我的 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 约束。