我有一个带有外键约束的数据库,其中 int(10) 引用了 int(11)。我也有 int(11) 参考 int(10)。
他们没有任何错误。这会在未来引起问题吗?(除了整数空间不足的问题)
尝试更改 varchar 的列大小时,我遇到了一种相关问题:
我有一个带有外键约束的数据库,其中 int(10) 引用了 int(11)。我也有 int(11) 参考 int(10)。
他们没有任何错误。这会在未来引起问题吗?(除了整数空间不足的问题)
尝试更改 varchar 的列大小时,我遇到了一种相关问题:
没问题。就存储和值范围而言,INT(10) 和 INT(11) 是完全相同的数据类型(32 位有符号整数)。整数参数只是显示的提示。
不同长度的 varchar 列也可以在外键关系中使用。显然,这些确实具有它们允许的不同值范围。不过没关系。
例如,父表具有较短的 VARCHAR(10),而子表具有 VARCHAR(20)。子表仍然不能使用超过 10 个字符的字符串,因为它必须匹配父表中的字符串,而且根本不会超过 10 个字符。
它也可以反向工作;如果父母有 VARCHAR(20) 而孩子有 VARCHAR(10)。子表将无法在父表中引用较长的字符串,但从不强制子表引用父表中的每个值,只有它可以引用的值。
基于此推理,您可能认为相同的逻辑适用于整数,因此 SMALLINT 应该能够引用 BIGINT。但是 MySQL 不允许这样做。