mysql约束int(10)引用int(11)

Chr*_*nch 2 mysql foreign-keys

我有一个带有外键约束的数据库,其中 int(10) 引用 int(11)。我还有 int(11) 参考 int(10)。

他们没有任何错误。这会在未来造成问题吗?(除了整数空间不足的问题)

当尝试更改 varchar 的列大小时,我遇到了一种相关问题:

mysql 5.6 外键约束错误;5.5中没有出现

Bil*_*win 5

没问题。就存储和值范围而言,INT(10) 和 INT(11) 是完全相同的数据类型(32 位有符号整数)。整数参数只是显示的提示。

不同长度的 varchar 列也可以在外键关系中使用。显然,它们确实具有不同的允许值范围。不过没关系。

例如,父表具有较短的 VARCHAR(10),而子表具有 VARCHAR(20)。子级仍然不能使用超过 10 个字符的字符串,因为它必须与父表中的字符串匹配,而且长度不会超过 10 个字符。

反之亦然;如果父级具有 VARCHAR(20) 并且子级具有 VARCHAR(10)。子表将无法引用父表中的较长字符串,但子表并不强制要求子表引用父表中的每个值,而只能引用它可以引用的值。

基于此推理,您可能认为相同的逻辑也适用于整数,因此 SMALLINT 应该能够引用 BIGINT。但 MySQL 不允许这样做。