我需要存储只有正数的整数,并且我目前正在使用MySQL。我将这些值设为UNSIGNED“以防万一”我曾经有过如此多的记录,然而,我是否会到达那里是值得怀疑的。
我很好奇是否更好的做法是不使用UNSIGNED标志,以防万一我以后希望将数据库更改为MS SQL等不支持无符号整数。
使用MySQL无符号整数被认为是不好的做法吗?
答案 0 :(得分:2)
我不认为使用适合所存储数据的数据类型是不好的做法。
您提出了一个关于其他数据库可移植性的非常好的问题。如果这是一个问题,那么您应该尝试遵守ANSI标准功能或您知道数据库之间相似的功能。
将代码从MySQL迁移到SQL Server可能需要付出更多的努力,而不仅仅是有符号整数和无符号整数之间的差异。功能不同,不存在或行为不同的地方有很多。只是给出一些例子:
cast()
在MySQL与SQL Server中采用不同的类型(as signed
vs as int
)123 + '456b'
的情况下具有静默错误处理,而SQL Server将产生错误。datediff()
在两个数据库中使用不同的参数因此,signed
和unsigned
之间的差异将成为转化中的一个小问题。如果您计划进行此类更改,则需要仔细编写代码。